【ExcelVBA】オートフィルタの設定がされているかを判定する

ExcelVBA, オートフィルタ

テスト対象のテーブル



テスト対象テーブルを使いたい場合は、↓テーブルをコピーしてエクセルの A1 に貼り付けてください。



商品名個数
りんご4
みかん3
めろん5
いちご2
みかん1

オートフィルタ設定がされているこを判定する

オートフィルタ設定がある状態で判定

Sub Sample()

    'オートフィルタ設定
    ThisWorkbook.ActiveSheet.Range("A1").AutoFilter
    
    '絞られているか判定
    If ThisWorkbook.ActiveSheet.AutoFilterMode = True Then
      MsgBox "フィルタ設定あり!"
    Else
      MsgBox "フィルタ設定ナシ!"
    End If

    'オートフィルタ解除
    ThisWorkbook.ActiveSheet.AutoFilterMode = False
    
End Sub

4行目のオートフィルタ設定がされていると、7行目の AutoFilterMode プロパティは True を返し、されていないときは False を返します。上記例は True を返します。判定結果は下になります。


結果


実行前のテーブル



オートフィルタ設定がナシの状態で判定

Sub Sample()

    'オートフィルタ設定
    'ThisWorkbook.ActiveSheet.Range("A1").AutoFilter
    
    '絞られているか判定
    If ThisWorkbook.ActiveSheet.AutoFilterMode = True Then
      MsgBox "フィルタ設定あり!"
    Else
      MsgBox "フィルタ設定ナシ!"
    End If

    'オートフィルタ解除
    ThisWorkbook.ActiveSheet.AutoFilterMode = False
    
End Sub

4行目のオートフィルタ設定をコメントアウトしました。オートフィルタ設定がされていない状態のため、7行目の AutoFilterMode プロパティは False を返します。この状態で実行した判定結果が下になります。


結果


実行前のテーブル