• ベストアンサー

【Excel】 マクロを補足してください。

A1をダブルクリックすると E、D、C、B列のオートフィルタで「すべて」を 選択するようにしました。 続けて 同じシートで、B1をダブルクリックするとE、D、C列の オートフィルタで「すべて」を選択、 C1をダブルクリックするとE、D列のオートフィルタで 「すべて」を選択するようにしたいのですが、 どのようにしたらよいのでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Selection.AutoFilter Field:=5 Selection.AutoFilter Field:=4 Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=2 End Sub お願いいたします。

  • hee1
  • お礼率32% (137/422)

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

Select Caseでやる方法もありますね。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub Cancel = True Select Case Target.Address(0, 0) Case "A1" ' A1ダブルクリックの処理 Case "B1" ' B1ダブルクリックの処理 Case "C1" ' C1ダブルクリックの処理 End Select End Sub

hee1
質問者

お礼

ありがとうございました。 大変上手く行きました。 本当に嬉しいです。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

以下のようなIf文構造にしたらいかが? If Target.Address = "$A$1" Then ' A1ダブルクリックの処理 Else   If Target.Address = "$B$1" Then '    B1ダブルクリックの処理   Else     If Target.Address = "$C$1" Then '      C1ダブルクリックの処理     End If   End If End If

hee1
質問者

お礼

お返事ありがとうございました。 上手く行きましたが、2で教えていただいた方が 処理が早いようでしたので、今回は2でやってみます。 ありがとうございました。

関連するQ&A

  • マクロの動作するタイミング

    こんにちは。 VBAに関して初心者です。宜しくお願い致します。 sheet1のB1でsheet名の一覧をドロップダウンから選択できるようにし、 sheet1A列に、選択したsheetのA列が表示されるようにしました。 そのA列をオートフィルターで「空白以外のセル」を表示していますが、 これをマクロを使って、常にオートフィルターを適用した状態にしたく ---------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Selection.AutoFilter Field:=1, Criteria1:="<>" Columns("A:A").Select Selection.Copy End Sub ---------------------------------------------------------- と、しました。 上記のマクロではB1で選択後、ダブルクリックするとA列の オートフィルターを適用し、その列をコピーする。 と言うことになります。 これを、ダブルクリックするのではなく、B1でsheet名を選択すると オートフィルターを適用するようにするには、どうしたらよいのでしょうか。 お願い致します。 WinXP Excel2003です。

  • Excelマクロ オートフィルタ可視領域の特定部分をコピー

    何方か、回答をお願いします。 下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。 やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。? Sub フィルタ() Range("B1:C1").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=1e-6" Range("B1").CurrentRegion.Select On Error Resume Next Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select Selection.Copy Range("K15").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter End Sub

  • excel2000のオートフィルタマクロ

    マクロ記録の簡単な編集程度の知識しかありません。 C1に入っている文字列を、完全一致ではなく、”含む”状態でオートフィルタしたいのですが、 どの様に記述すればいいですか? 現状、下記のようになっています。 Selection.AutoFilter Field:=2, Criteria1:="C1", Operator:=xlAnd よろしくお願いいたします。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • フィルタで検索した行をマクロで削除する時のコード。

    フィルタで検索した行を一括して削除するマクロを作りました。 記録して加工したマクロで今のところ動くのですが、 理解不能の箇所があるので教えてください。 下記マクロはC列の空白行をフィルターで選択して、表示された行を削除するマクロです。(データは2行目から始まっていて、フィルターは1行目に行います。また、行は全て連続しています。) また、コメントを各コードにつけています。 ここで、コメント内の(1)で示した箇所は2行目を選ぶことになっているのですが、何故これで良いのでしょう?2行目のデータがフィルターにより隠れることもあるのですが、このコードできちんと動きます。 可視セルしか削除しないのなら、分かるのですが、 そのようなコードも無いようですし・・・ なぜこのコードで動くのか教えてください。 Rows("1:1").Select  '1行目を選ぶ Selection.AutoFilter  'オートフィルター Range("C1").Select   'C1を選ぶ Selection.AutoFilter Field:=3, Criteria1:="=" '空白行を探す。Field3は不明です Rows("2:2").Select  '(1) 2行目を選択 Range(Selection, Selection.End(xlDown)).Select '2行目から連続した最後の行までを選択 Selection.Delete Shift:=xlUp  '選んだところをDelして上に詰める。 Range("C1").Select  'C1を選ぶ Selection.AutoFilter Field:=3  'フィルタ解除 基本的なことかもしれませんが、ご教示頂ければ幸いです。 よろしくお願いします。

  • エクセルのマクロ

    勉強を始めたばかりで処理を繰り返す項目をいろいろ調べたのですがうまくいきません。教えてください。 オートフィルタで3列目を”東京 ”という文字でを抽出したあとである処理をし、その後同じ列で今度は”神奈川 ”を選び同様の処理をする。また今度は 次は"千葉”と繰り返したいのです。 マクロを見てみると Selection.AutoFilter Field:=3, Criteria1:="1"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="2"    何らかの処理 Selection.AutoFilter Field:=3, Criteria1:="3"    何らかの処理 となっています。こうなると必要な数だけ これをコピーしないといけないので ループのようなもので下記の■の部分の 数字を1.2.3.~と処理を繰り返す毎に 増やして生きたいのです。 そしてリストの最後にきたらおしまいにしたいのですが・・・・。FOR NEXT とか DO LOOP とか 試しましたが、私の幼稚な知識ではうまく動いてくれませんでした。すみませんがよろしくお願いします。 Selection.AutoFilter Field:=3, Criteria1:="■" 処理

  • オートフィルタ マクロについて

    質問です。 オートフィルタで複数列を1つの条件で抽出したいのですが、教えてください。 たとえばA列が納品書No.・B列が受注No.・C列が商品No.なのですがすべて数字の為、出来ればInBox一回でA-C列を検索してほしいです。 指定納品書NO 受注NO 元品番 21812 3252608 77 21880 3307989 32B 22053 3389769 95414A 22050 3389770 67312H 22052 3389771 67312H 22050 3389773 67118H 以下の様なマクロを作ってみましたが、 A-C列全てに一致しないと抽出しないようです。 どなたかご教授いただけないでしょうか? マクロ '条件1 の設定 Dim 検索NO As Variant '抽出キーの入力指示 検索NO = InputBox("検索NOを入力てください。") 'キャンセルした場合の処理 If 検索NO = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A2:O2").Select Selection.AutoFilter Else Selection.AutoFilter Range("A2:O2").Select Selection.AutoFilter End If Selection.AutoFilter Field:=1, _ Criteria1:=">=" & 検索NO, Operator:=xlAnd, Criteria2:=" " & 検索NO Selection.AutoFilter Field:=2, _ Criteria1:=">=" & 検索NO2, Operator:=xlAnd, Criteria2:=" " & 検索NO2 Selection.AutoFilter Field:=3, _ Criteria1:=">=" & 検索NO3, Operator:=xlAnd, Criteria2:=" " & 検索NO3 AutoFilterMode = False Application.ScreenUpdating = True End Sub よろしくお願いいたします。

  • 【マクロ】オートフィルター内の全データが削除される

    こんにちは、質問させていただきます。宜しくお願いします。 [エクセル] 2007 [内容] オートフィルタをかけ任意のデータのみ消したいのですが 全てのデータが消えてしまいます。 [詳細] A1~C5までデータが入っているのもだと仮定します。 (実際には項目があってフィルタがきちんとかかるものとします。)    A   B   C ----------------------- 1  ○   2個  \10 2  △   1個  \5 3  ×   3個  \15 4  ○   1個  \20 5  ○   4個  \5 オートフィルタをかけA列を基準として「○」を選択します。 そして選択した「○」を含む行(1行・4行・5行)を削除し 2行・3行目が残るようにしたいです。 その一連をマクロにして処理したいのですが… 1行から5行のすべての行データが削除されてしまいます。 <マクロ作成> マクロを記憶する。 ↓ 手動でオートフィルタをかけ、「○」を選択して行を削除 ↓ マクロの記憶を終了。 ↓ マクロ文の削除する行範囲をA1からC5に書き換え ↓ マクロ実行 <マクロ作成文>  Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="○" ActiveSheet.Range("A1:C5").Select Selection.Delete Shift:=xlUp ※エクセル2007のバージョンによっては選択した「○」のみ 削除されるPCもありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • 1行のVBAコードでフィルタの解除したい

    フィールド1 フィールド2 1         あ 2         い 3         う で、コマンドボタンを押したら、 A列にフィルタがかかっていても、 B列にフィルタがかかっていても、解除したいのですが、 どういうコードにすればいいのでしょうか? Private Sub CommandButton1_Click() Selection.AutoFilter Field:=1 Selection.AutoFilter Field:=2 End Sub こうするしかないでしょうか? 今は2列だから良いのですが、実際のデータは、30列以上あります。 その場合、1行のVBAコードでフィルタの解除が出来ればいいなーと思っています。 ご回答よろしくお願いします。

専門家に質問してみよう