• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンボボックスとオートフィルタの連動)

コンボボックスとオートフィルタの連動

このQ&Aのポイント
  • データの件数が増えてきたので、コンボボックスで選択した項目を一発で表示させるマクロを組みたいと思います。
  • マクロを実行させたいシートにはA3からK3までの項目があります。そのうち、B3の項目でフィルタをかけたいです。
  • セルC1にINDEX関数を置き、(A3:A16)のそれぞれの値を文字に変換して選択項目として使用します。選択項目が空白の場合はマクロから抜けます。オートフィルタのセットは既にセットされていたら解除してから再度セットし、選択項目をキーにしてオートフィルタで抽出します。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

変数『選択項目』に代入されるデータは期待通りの物でしょうか 実際に操作してうまくいくて順を『新しいマクロの記録』で作成した物と見比べてみましょう また、現状どのようなデータがあって 何をキーにしてどのような結果を期待するのか 実際にマクロを動作させた際にどの部分が期待に反する結果なのかを投稿しましょう Sheets(実行シート名).Select If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter Range("A3:K3").Select Selection.AutoFilter Else Range("A3:K3").Select Selection.AutoFilter End If の部分で Range("A3:K3").Select Selection.AutoFilter は共通で使えると思いますから Sheets(実行シート名).Select Range("A3:K3").Select If ActiveSheet.AutoFilterMode = True Then   Selection.AutoFilter End If Selection.AutoFilter といった具合に簡略か出来ますよ

muh0101
質問者

お礼

結局、自分ではこれ以上時間が割けず、専任者にトスしてしまいました。 ご教示いただいたポイントは今後の参考にさせて頂きます。 また簡略化できる部分のアドバイスもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    オートフィルタのマクロを組もうとしているのですが、フィルタ条件に別シートのセルの値を入れたいのですが、そこがどうもうまくいきません。 作成したマクロは以下の通りです。 Sub 累計計算マクロ() Dim aRange As Range, bRange As Range, i As Date Set aRange = Sheets("累計").Range("B1") Set bRange = Sheets("累計").Range("B2") i = aRange.Value Sheets("クイーンエステート").Activate Range("A13:L13").Select Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:="<=i", Operator:=xlAnd 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もありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • ExcelVBAでのオートフィルタの設定

    マクロ自動記録でオートフィルタの設定・解除を行うと次のようになりました。 設定の場合 Range("A1:E10").Select ' "A1:E10"は範囲の例  Selection.AutoFilter 解除の場合 Selection.AutoFilter セル範囲を選択してSelection.AutoFilterとするだけのようですが、明確に設定・解除の指定方法はないのでしょうか。

  • オートフィルター VBAでの設定について

    オートフィルターで0以外のものに絞って、 コピーしたいのですが、 値が0しかない場合にすべてのものをコピーするように なってしまうので、 コピーすることがないようにさせたいです。 例) Sub test() Sheets("Sheet1").Select Selection.AutoFilter ActiveSheet.Range("$A$2:$A$10").AutoFilter Field:=1, Criteria1:="<>0" Range("A2:A10").Select Range(Selection, Selection.End(xldown)).Select Selection.Copy End Sub このようなコードの場合にA2:A10の値が0しかなかった場合に コピーしている状態をなくしたいのですが、 どこのコードを変えたらいいでしょうか。 回答よろしくお願いいたします。

  • エクセルマクロでオートフィルタを貼り付け。VBA

    お世話になっております。 エクセルのマクロを作成したのですが、上手く機能いたしません。 オートフィルタで条件に一致するものが現在表示されている 「CSV元データをここに貼り付ける」という名前のシートが ございます。 これをシートを全選択し、そのまま 「加工1」という名前のシートに貼り付ける。 といったマクロを作成したのですが、加工1には何も貼り付けられていないようです。 下記にマクロのプログラムを記載しますので、どこを訂正すればいいのかをお教えいただければ ありがたいです。 無知で申し訳ございませんが、何卒よろしく御願いいたします。 当方が今したいのは、マクロ2なのですが、マクロ2を見ようとするとマクロ1も表示されます。 なぜ、マクロ1もでてくるのかわかりませんが、よろしく御願いいたします。 Sub マクロ1() ' ' マクロ1 Macro ' マクロ記録日 : 2011/10/31 ユーザー名 : ' ' Columns("A:D").Select Selection.Delete Shift:=xlToLeft Columns("D:D").Select Sheets("読込データ(加工1)").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Sheets("読込データ(ORG)").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 11 Sheets("csv元データをここに貼り付ける").Select Columns("B:D").Select Selection.Delete Shift:=xlToLeft Columns("I:P").Select Selection.Delete Shift:=xlToLeft Range("I19").Select Sheets("csv元データをここに貼り付ける").Select Rows("2:2").Select Selection.AutoFilter Selection.AutoFilter Field:=9, Criteria1:="=2", Operator:=xlAnd End Sub Sub マクロ2() ' ' マクロ2 Macro ' マクロ記録日 : 2011/10/31 ユーザー名 : ' ' Cells.Select Selection.Copy Sheets("加工1").Select Range("G12").Select End Sub

  • 【Excelマクロ】特定のタイミングでオートフィルタ-を解除し、コンボボックスの表示項目を変更するには。

    お教えください。 まずは現状です。 シート1とシート2があります。 シート1上にはコンボボックスがあります。 コンボボックス内の項目を選択すると、シート1内でオートフィルタ-が実行され、選択項目をキーに絞り込まれます。 シート1とシート2はそれぞれ画面上のボタンで行き来できます。 シート2にはコンボボックスはありません。 ここで質問です。 (1)シート1でコンボボックスを利用し、オートフィルタ-を実行したまま状態で、(2)シート2にボタン(ないしは下のタブ)で移動します。(3)さらに再度ボタン(ないしは下のタブ)でシート1に戻るとします。 (1)~(3)の操作を行った時に、シート1のオートフィルタ-を解除し、コンボボックスの表示項目を「すべて表示」という項目に自動変更させる方法はありますでしょうか? 下記がボタン押下時のコードです。 一応ボタンで戻った時にオートフィルタ-は解除できるようになりました。下のタブだと変化なしです。 Sub ボタンA_Click() ' シート1を開く Sheets("シート1").Select End Sub Sub ボタンB_Click() If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData End If ' シート2を開く Sheets("シート2").Select End Sub 現状ではコンボボックスはそのままで、(タブで戻った時は)オートフィルタ-も変わりません。 どなたかご指南ください。 よろしくお願いします。

  • エクセルでのフィルタについて

    エクセルのことで、教えてください。 1つのブックに、たくさんのシートがあります。 1枚は、印刷用シートでA1セルの数字によって内容を変更できるようになっています。 2枚目以降は1列目に1から45までの数字、2列目以降に文章があります。 で、2枚目以降の2列目を印刷用シートに図のリンク貼り付けしておいて、印刷用シートのA1セルの数字で、2枚目以降のシートをフィルタリングすると、印刷用シートの内容が変更するようにしています。 そのフィルタリングのために、以下のようなマクロを組んでいます。 a = Range("A1").Value Sheets("Sheet2").Select Selection.AutoFilter Field:=1, Criteria1:=a Sheets("Sheet3").Select Selection.AutoFilter Field:=1, Criteria1:=a Sheets("Sheet4").Select Selection.AutoFilter Field:=1, Criteria1:=a       以下シートの枚数だけ続く。 これだとこのマクロが実行完了するまである程度の時間を要するので、もう少し時間を短縮できるような記述に出来ないかというのがお聞きしたいことです。マクロの記録で作成したものを参考にしたのでこうなっているんですが、何かうまい方法があれば教えてください。

  • Excelマクロでオートフィルターからコピペ

    ファイルのB列の値から0以外の値をオートフィルターで抽出し、値を、別のファイルのD列の一番下に貼りつけるマクロを作っていますがうまくいきません。 今作ったのは Sub macro1() If ActiveSheet.AutoFilterMode = False Then Range("A:G").Select Selection.AutoFilter Else Selection.AutoFilter Range("A:G").Select Selection.AutoFilter End If Selection.AutoFilter Field:=2, Criteria1:="<>0", Operator:=xlAnd Range("A1").Select Range("B2", Range("B2").End(xlDown)).Select Selection.Copy Windows("貼りつけるファイル名").Activate Cells(Rows.Count, 4).End(xlUp).Offset(1).Select ActiveSheet.Paste End Sub です。 フィルターで0以外の値を抽出しコピーまではできていますが、貼りつけるところでエラーがでます。 Microsoft Visual Basic 400 というエラーです。 何が悪いのか分かりません・・・。 分かる方いましたらご教授ください。よろしくお願いします。

  • オートフィルタ抽出データをコピーするマクロについて

    マクロについて勉強中の者です。 "Sheet1"にあるデータをオートフィルタで抽出し、 "Sheet2"に抽出データのみをコピーをしたいと思っています。 Range("A10:G59").Select Selection.ClearContents With Worksheets("Sheet1").Range("A1") .AutoFilter .AutoFilter Field:=1, Criteria1:="○" .CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9") End With End Sub としてみたのですが、 これを実行すると、オートフィルタが1行目(A1)ではなく、 2行目で設定されてしまい、抽出データがずれてしまいます。    A    B    C 1 品 名  仕入先  発注数 ←タイトル行に設定したい 2 りんご  ヤマト   10  ← この行に▼が設定される 色々調べた結果のマクロなので、どこが悪いのか見当がつきません。 解りやすく教えていただける方がおられましたら、よろしくお願い致します m(__)m

  • オートフィルタで未入力(空白)を無視した抽出法

    いつもお世話になっております。 現在第一条件から第三条件までの入力フォームを作成し、その条件に基づいたオートフィルタを作成中なのですが、 第二条件以下に未入力の場合のオートフィルタができなくて困っています。 これら未入力(空白)でもきちんと抽出できるオートフィルタを作るにはどうしたら良いですか? 以下に私が作成したものを転記いたしますので、どなたかご教示くださいますよう、お願いいたします。 With Worksheets("業種別検索") myCriteria1 = .Range("a2").Value myCriteria2 = .Range("b2").Value      myCriteria3 = .Range("c2").Value End With With Worksheets("元データ") If Worksheets("元データ").AutoFilterMode = False Then Range("A6:z6").Select Selection.AutoFilter Else Sheets("元データ").Select Selection.AutoFilter Range("A6:z6").Select Selection.AutoFilter End If .Range("A1").CurrentRegion.AutoFilter 17, myCriteria1, xlAnd .Range("A1").CurrentRegion.AutoFilter 18, myCriteria2, xlAnd .Range("A1").CurrentRegion.AutoFilter 19, myCriteria3, xlAnd End With