【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 を返します。この判定結果は下記になります。
結果

実行前のテーブル





ディスカッション
コメント一覧
まだ、コメントがありません