マクロでオートフィルタが設定されているかを判定する方法・設定されている場合、解除する方法について説明します。
オートフィルタで絞り込まれているかを判定する
オートフィルタで絞込みが設定されているかどうかを判定する方法についてです。
以下は絞り込みが行われているかを判定してメッセージを表示している例です。
下のコードは「ActiveSheet.FilterMode」がTrueかどうかをIf関数で判定して、メッセージを分岐させています。
'<フィルタで絞込み設定がされているかを判定>
If ActiveSheet.FilterMode = True Then
MsgBox "絞り込まれています"
Else
MsgBox "絞り込まれていません"
End If
両方ともオートフィルタは設定されていますが、左の図は絞り込まれていない状態なので「絞り込まれていません」のメッセージが表示されて、右の図はフィルタで絞り込まれている状態のため「絞り込まれています」のメッセージが表示されています。
オートフィルタが設定されているかを判定する
次はオートフィルタ設定がされているかどうかを判定したい場合についてです。
「ActiveSheet.AutoFilterMode」がTrueかどうかをIf関数で判定します。
※絞り込まれているか、とフィルタが設定されているか、は似ていますが意味が違うので注意です。
▽オートフィルタで絞込みがされているか判定
If ActiveSheet.FilterMode = True Then
(フィルタが設定されていても絞り込まれていなければFalse)
▽オートフィルタが設定されているかを判定
If ActiveSheet.AutoFilterMode = True Then
(絞り込まれていなくてもフィルタが設定されていればTrue)
'<オートフィルタが設定されているかを判定>
If ActiveSheet.AutoFilterMode = True Then
MsgBox "オートフィルタが設定されています。"
Else
MsgBox "オートフィルタが設定されていません。"
End If
オートフィルタが設定されている場合は「オートフィルタが設定されています。」のメッセージが表示されます。
オートフィルタで「すべて選択」する(すべて表示)
オートフィルタの絞込み設定を「すべて選択」にして、全データを表示させたい場合についてです。
左の図ように今絞込みが設定されている表に対して実行すると、右の図のようにフィルタは設定されたままでデータはすべて表示された状態となります。
下のコードはオートフィルタで絞込みがされているかをIF関数で判定して、絞込みがされている場合は「すべて選択」を行います。
'<フィルタで絞込み設定が設定されている場合、フィルタですべて表示させる>
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
オートフィルタを解除する
今度はフィルタの設定自体を解除したい場合についてです。
左のように今絞込みが設定されている表に対して、実行すると右のようにフィルタ設定の▽がない状態になります。絞り込んでいた設定もなくなります。
オートフィルタが設定されている場合、「.AutoFilter」メソッドを使用するとフィルタ解除することができます。(フィルタを設置するときと同じ記述です。)
下のコードはオートフィルタが設定されているかをIF関数で判定して、フィルタが設定されている場合、「.AutoFilter」メソッドで解除を行います。
'<オートフィルタが設定されている場合、オートフィルタを解除する>
If ActiveSheet.AutoFilterMode = True Then
ActiveSheet.Range("A1").AutoFilter
End If
オートフィルタ関連の記事
オートフィルタの操作に関する記事は↓にもありますのでよろしければこちらもご覧ください。
オートフィルタで絞り込む方法について↓
オートフィルタを使用したデータの並び替えについて↓
オートフィルタで絞り込んだデータの操作について↓
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。