【VBA】オートフィルターを使う

VBA

VBAでオートフィルターを扱う方法をご紹介します。

VBAでオートフィルターを設定する

RangeのAutoFilterを使用

VBAでオートフィルターを使用するにはRangeのAutoFilterメソッドを使用します。

FilterTestシートにデータが入力されています。

このシートから下記の条件のデータをオートフィルターを使用して表示してみます。

  • 種類が野菜
  • 名前が空白ではない
  • 備考が空白である

 

オートフィルターを設定するコード

オートフィルターを設定するコードは以下になります。

 

field引数には数値を設定します。
Rangeで指定した範囲内の何列目のデータに対して
オートフィルターの条件を設定するか指定します。
Rangeで指定した範囲の最も左の列が1となります。

今回はAからC列までの範囲を指定するので、A列が1,B列が2、C列が3になります。

Criteria1にはオートフィルターの条件を指定します。

“文字列” 文字列と同じものだけを表示
“<>” 空白ではないものを表示
“=” 空白であるものを表示

 

シートの最終行と最終列を取得するために
getMaxRowUsedRangeとgetMaxColUsedRangeを使用しています。

【VBA】UsedRangeで最終行・最終列を取得する
以前、VBAで最終行と最終列を取得する getMaxRowプロシージャとgetMaxColプロシージャを作成しました。 こちらのプロシージャは、最終行を取得するために列番号 最終列を取得するために行番号を引数に渡す必要があ...

 

オートフィルター設定コードのテスト

test_setFilterを実行するとオートフィルターを設定します。

 

実行結果は以下になります。
3行目のデータのみ条件に合っているので、3行目のデータだけ表示されます。
他のデータは条件が違うのでフィルターが掛かり、表示されません。

 

オートフィルターを解除する

オートフィルターを解除するにはWorksheetオブジェクトのFilterModeを変更します。

オートフィルターを解除するコードは以下になります。

FilterModeがTrueのときはシートにオートフィルターが掛かっているので
WorksheetオブジェクトのShowAllDataメソッドを使用して
データをすべて表示します。

 

参考

Range.AutoFilter メソッド (Excel)

Range.AutoFilter method (Excel)

Worksheet.ShowAllData メソッド (Excel)

Worksheet.ShowAllData method (Excel)

コメント