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

VBA
この記事は約3分で読めます。

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で最終行・最終列を取得する
UsedRangeを使用して、シート上の最終行と最終列を取得するプロシージャを作成してみます。 Sheet1に下記のようにデータが入力されています。 D列に最終行、5行目に最終列が入力されています。 UsedRan...

 

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

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

 

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

 

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

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

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

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

 

参考

Range.AutoFilter メソッド (Excel)

Range.AutoFilter メソッド (Excel)
Office VBA リファレンス トピック

Worksheet.ShowAllData メソッド (Excel)

Worksheet.ShowAllData メソッド (Excel)
Office VBA リファレンス トピック

コメント