【ExcelVBA】オートフィルタで絞られているかを判定する
テスト対象のテーブル
テスト対象テーブルを使いたい場合は、↓テーブルをコピーしてエクセルの A1 に貼り付けてください。
商品名 | 個数 |
---|---|
りんご | 4 |
みかん | 3 |
めろん | 5 |
いちご | 2 |
みかん | 1 |
オートフィルタで絞られているかを判定する
絞られている状態で判定(パターン1)
Sub Sample() 'オートフィルタ設定 ThisWorkbook.ActiveSheet.Range("A1").AutoFilter _ Field:=1, _ Criteria1:="みかん" '絞られているか判定 If ThisWorkbook.ActiveSheet.AutoFilter.FilterMode = True Then MsgBox "絞られています!" Else MsgBox "絞られていません。だめ!" End If 'オートフィルタ解除 ThisWorkbook.ActiveSheet.AutoFilterMode = False End Sub
絞られているとき 9行目の FilterMode プロパティは True を返し、絞られていないときは False を返します。上記の例は True を返します。注意点として、4行目のオートフィルタ設定の記述がない状態で実行すると9行目でエラーとなりプロシージャは停止します。4行目のフィルタ設定があれば、絞り込み設定(5行目~6行目)が無くてもエラーは起きません。
結果
実行前のテーブル
★オートフィルタの設定状態を判定したい場合
絞られていない状態で判定(パターン2)
Sub Sample() 'オートフィルタ設定 ThisWorkbook.ActiveSheet.Range("A1").AutoFilter '絞られているか判定 If ThisWorkbook.ActiveSheet.AutoFilter.FilterMode = True Then MsgBox "絞られています!" Else MsgBox "絞られていません。だめ!" End If 'オートフィルタ解除 ThisWorkbook.ActiveSheet.AutoFilterMode = False End Sub
パターン2はパターン1の 5行目~6行目 の絞り込み設定を削りました。そのため、4行目のオートフィルタ設定は施されていますが絞り込みはされません。 なので上記の 9行目の FilterMode プロパティは False を返します。この判定結果は下記になります。
結果
実行前のテーブル
ディスカッション
コメント一覧
まだ、コメントがありません