非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Excel/VBA】オートフィルターが設定されているか判断する方法

   

VBAでオートフィルターを制御する際にフィルター設置は特に問題ないのですが、フィルター解除する際にフィルターがかかっていないとエラーが出ます。そのためあらかじめフィルターがかかっているか判定する必要があるのでその方法について紹介します。

簡単に動画にしたのでご覧ください。最初はフィルター解除時にエラーが出ますが、とあるIF文を入れたことでエラーを回避できています。

 

フィルター選択を解除してすべてのデータを見れるようにするには以下のコードになりますが、フィルター選択されていない場合(あるいはフィルターそのものが存在していない場合)はエラーが発生してしまします。

ActiveSheet.ShowAllData

 

 

エラーを回避する場合は以下のように ActiveSheet.FilterModeTrue になっている時だけ実行すればOKです。

If ActiveSheet.FilterMode Then
  ActiveSheet.ShowAllData
End If
 

 

なお、以下のようにフィルターをかける際はどんな状況でもエラーにならずフィルターがかかります。

ActiveSheet.Range("A5:G1000").AutoFilter Field:=4, Criteria1:="男"
 

 

スポンサーリンク

 - Excel, VBA