【VBA】オートフィルタを設定する方法(AutoFilterメソッド)
今回はVBAでオートフィルタが設定する方法を紹介します。
オートフィルタの設定は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
そのため、オートフィルタを(消すことなく)設定したいときには、このようなコードを書く必要があります。
オートフィルタが設定されているかはAutoFilterModeプロパティで確認することができます。
このプロパティでオートフィルタの設定があるかを確認し、オートフィルタの設定がない場合のみAutoFilterメソッドを実行しています。
これならオートフィルタが無い時のみAutoFilterメソッドを実行してオートフィルタの設定ができます。