【Excel/VBA】オートフィルターが設定されているか判断する方法
VBAでオートフィルターを制御する際にフィルター設置は特に問題ないのですが、フィルター解除する際にフィルターがかかっていないとエラーが出ます。そのためあらかじめフィルターがかかっているか判定する必要があるのでその方法について紹介します。
簡単に動画にしたのでご覧ください。最初はフィルター解除時にエラーが出ますが、とあるIF文を入れたことでエラーを回避できています。
フィルター選択を解除してすべてのデータを見れるようにするには以下のコードになりますが、フィルター選択されていない場合(あるいはフィルターそのものが存在していない場合)はエラーが発生してしまします。
ActiveSheet.ShowAllData
エラーを回避する場合は以下のように ActiveSheet.FilterMode
が True
になっている時だけ実行すればOKです。
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If
なお、以下のようにフィルターをかける際はどんな状況でもエラーにならずフィルターがかかります。
ActiveSheet.Range("A5:G1000").AutoFilter Field:=4, Criteria1:="男"
スポンサーリンク