【Excel VBA】シートのフィルターを外す方法を紹介【AutoFilterMode】

Excel
スポンサーリンク

今回はシートのフィルターを外す方法を備忘録も兼ねて紹介したいと思います。

スポンサーリンク

シートのフィルターを外す方法

シートにかかっているフィルターを外すには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」シートのフィルターの状態に応じてメッセージボックスに値が表示されます。

フィルターがかかっていればTrueが返ってくる
フィルターがかかっていれければFalseが返ってくる

この性質を利用して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に関する記事を不定期で投稿していますので、是非ご覧ください!

タイトルとURLをコピーしました