【VBA】オートフィルターが設定されているか確認する方法

【VBA】オートフィルターが設定されているか確認する方法

今回はVBAでオートフィルタが設定されているか確認する方法を紹介します。

また、オートフィルタを設定する方法についても紹介します。

オートフィルタが設定されているか確認する方法

Sub CheckAutoFilter()
    '''オートフィルタが設定されているか確認
    If ActiveSheet.AutoFilterMode Then
        MsgBox "オートフィルタが設定されています"
    Else
        MsgBox "オートフィルタが設定されていません"
    End If
End Sub

オートフィルタが設定されているかはAutoFilterModeプロパティで確認します。

このプロパティは設定されている場合にはTrueを、そうでない場合にはFalseを返します。

そのため、サンプルコードのようにすればアクティブシートにオートフィルタが設定されているかどうかを確認できます。

オートフィルタを設定する方法

この記事を読んでいる方はおそらく、AutoFilterメソッドを使ってオートフィルタの設定をしたいのではないでしょうか?

ただ、このAutoFilterメソッドには少しクセがあります。

AutoFilterメソッドのクセ
Sub AutoFilterProblem()
    'フィルタ有の時は解除され、フィルタ無しの時は設定される
    ActiveSheet.Rows(1).AutoFilter
End Sub

図のように1行目に見出しを設定して、上記のサンプルコードを何度か実行してみてください。

オートフィルタが付いたり消えたりするのが分かると思います。

  • オートフィルタが無い時 ⇒ オートフィルタが設定される
  • オートフィルタが有る時 ⇒ オートフィルタが消える

AutoFilterメソッドはこのような動作をします。

Sub SetAutoFilter()
    '''オートフィルタが設定されていない⇒1行目にオートフィルタを設定
    With ActiveSheet
        If Not .AutoFilterMode Then
            .Rows(1).AutoFilter
        End If
    End With
End Sub

そのため、オートフィルタを(消すことなく)設定したいときには、このようなコードを書けばOKです。

これならオートフィルタが無い時のみAutoFilterメソッドを実行してオートフィルタの設定ができます。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/12/08 14:44:42時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい