今回はシートのフィルターを外す方法を備忘録も兼ねて紹介したいと思います。
シートのフィルターを外す方法
シートにかかっているフィルターを外すにはAutoFilterMode = False
を使用すれば外すことができます。
Sub test_Filter_Off()
Sheets("Sheet1").AutoFilterMode = False
End Sub
上記コードを実行すると、「Sheet1」シートにかかっているフィルターを外すことができます。
ちなみに以下コードなら実行するたびにオンオフが切り替わります。
'実行するたびにオン&オフが切り替わる
Sheets("Sheet1").Range("A1").AutoFilter
フィルターがかかっているか判定する方法
次にフィルターがかかっているか判定する方法を紹介します。
今回、判定にAutoFilterMode
を使用します。
AutoFilterMode
はフィルターの状態(TrueもしくはFalse)を取得することができ、Trueであればフィルターがかかっており、Falseであればフィルターがかかっていない状態であることが確認できます。
MsgBox Sheets("Sheet1").AutoFilterMode
上記コードを実行すると、「Sheet1」シートのフィルターの状態に応じてメッセージボックスに値が表示されます。
この性質を利用してIF文と組み合わせることで、対象のシートにフィルターがかかっているかどうかを判定することが出来るようになるわけです。
というわけで以下サンプルコードです。
Sub check_IsFilter()
If Sheets("データ").AutoFilterMode Then
Sheets("データ").AutoFilterMode = False
End If
End Sub
「データ」シートがある状態で上記コードを実行すると、フィルターがかかっていればオフにすることが出来ます。
ちなみにアクティブになっているシートを対象にしたい場合は以下のように記述すればOKです。
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
まとめ
今回はシートのフィルターを外す方法を紹介しました。
フィルターがかかっている状態でマクロを実行すると予期しないエラーが発生しかねないので、覚えておくと開発時に役に立つと思います!
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント