オートフィルタって検索する時便利ですよね。これをVBAで扱おうとすると少しコツがいります。覚えておけば何ともない話ですので覚えておきましょう。今回はオートフィルタの使い方をまとめます。
オートフィルタをVBAで使う時の注意点
オートフィルタは他の命令と異なり、「範囲を設定してオートフィルターを宣言する」だけです。
ONとかOFFとか明示的に指定できるものでは無く、宣言ごとに ON → OFF → ON → OFF と切り替わります。
なので今オートフィルタがONなのかOFFなのかを判定するのがポイントになります。
AutoFilterMode で判断する
シート.AutoFilterMode が true か false かで判断します。
true で設定されている。false で解除されている。です。
If文と使うのが一般的ですね。
オートフィルターを設定する
AutoFilterMode = false ならばオートフィルターを設定します。
VBAで記述すると
' オートフィルタが解除されている場合 If (ActiveSheet.AutoFilterMode = False) Then ' セルを指定し、オートフィルタを設定する Range("B1:H1").AutoFilter End If
となります。
オートフィルターを解除する
逆のことをやればいいので、AutoFilterMode = true ならばオートフィルターを解除します。
' オートフィルタが設定されている場合 If (ActiveSheet.AutoFilterMode = True) Then ActiveSheet.Range("A1").AutoFilter End If
解除する場合のセルの指定は何でもいいようです。
まとめ
データベースからデーターを抽出する場合オートフィルターをかけられていて期待と異なる抽出結果になる場合があります。
その様な懸念がある場合は、検索前にオートフィルターを解除して、検索後にオートフィルターを設定しておくと事故の回避になります。
この記事へのコメントはありません。