Excel VBA オートフィルターを表すAutoFilterオブジェクト

スポンサーリンク
スポンサーリンク

AutoFilter【オートフィルター】オブジェクト

オートフィルターを表す
AutoFilter【オートフィルター】オブジェクトを取得するには
Range【レンジ】オブジェクトの
AutoFilter【オートフィルター】メソッドを実行して取得します。
また、オートフィルターが設定されているワークシートの
オートフィルターを表す
AutoFilter【オートフィルター】オブジェクトを取得するには
Worksheet【ワークシート】オブジェクトの
AutoFilter【オートフィルター】プロパティを使用します。


AutoFilter【オートフィルター】プロパティ

ワークシートに設定されている
オートフィルターを表す
AutoFilter【オートフィルター】オブジェクトを取得するには
Worksheet【ワークシート】オブジェクトの
AutoFilter【オートフィルター】プロパティを使用します。
値の取得のみ可能です。
ワークシートにオートフィルターが設定されていない場合は
Noting【ナッシング】が返ります。

AutoFilter【オートフィルター】プロパティの書式

オブジェクト.AutoFilter
【戻り値】AutoFilterオブジェクト


設定値の説明

  • オブジェクト(必須)
    基本はオートフィルターが設定されている
    Worksheetオブジェクトを指定します。

AutoFilter【オートフィルター】オブジェクトの主なメソッド一覧

メソッド内容
ShowAllData
【ショーオールデータ】
フィルターでの抽出を解除して
すべてのデータを表示します。

AutoFilter【オートフィルター】オブジェクトの主なプロパティ一覧

プロパティ内容
FilterMode
【フィルターモード】
フィルターでデータが
抽出されているかいないかを返します。
Filters
【フィルターズ】
フィルターの集まりを表す
Filters【フィルターズ】コレクションを取得します。
Range
【レンジ】
フィルターが設定されている
セル範囲を取得します。

ShowAllData【ショーオールデータ】メソッド

オートフィルターでデータが抽出されている
データ範囲の抽出を解除して全データを表示するには
オートフィルターを表す
AutoFilter【オートフィルター】オブジェクトの
ShowAllData【ショーオールデータ】メソッドを使用します。

ShowAllData【ショーオールデータ】メソッドの書式

オブジェクト.ShowAllData


設定値の説明

  • オブジェクト(必須)
    Worksheetオブジェクトの
    AutoFilter【オートフィルター】プロパティまたは
    Range【レンジ】オブジェクトの
    AutoFilter【オートフィルター】メソッドで取得した
    オートフィルターを表す
    AutoFilter【オートフィルター】オブジェクトを指定します。

ワークシートの絞り込まれているデータを表示するコード例

オートフィルターでデータが絞り込まれていることが前提です。

Sub 全データ表示()
ActiveSheet.AutoFilter.ShowAllData
End Sub

FilterMode【フィルターモード】プロパティ

オートフィルターでデータが
抽出されているかいないかを調べるには
AutoFilter【オートフィルター】オブジェクトの
FilterMode【フィルターモード】プロパティを使用します。
データが抽出されているされていないを
ブール型の値(Boolean)で返します。

戻り値内容
True抽出されています。
False抽出されていません。

FilterMode【フィルターモード】プロパティの書式

オブジェクト.FilterMode
【戻り値】ブール型(Boolean)


設定値の説明

  • オブジェクト(必須)
    Worksheetオブジェクトの
    AutoFilter【オートフィルター】プロパティまたは
    Range【レンジ】オブジェクトの
    AutoFilter【オートフィルター】メソッドで取得した
    オートフィルターを表す
    AutoFilter【オートフィルター】オブジェクトを指定します。

オートフィルターでデータが抽出されているかどうかを判定するコード例

Sub 判定()
If ActiveSheet.AutoFilterMode = True Then
  If ActiveSheet.AutoFilter.FilterMode = True Then
     MsgBox "データは抽出されています。"
  Else
     MsgBox "データは抽出されていません。"
  End If
Else
MsgBox "オートフィルターが設定されていません。"
End If
End Sub

コードの解説

2行目
【If ActiveSheet.AutoFilterMode = True Then】

If【イフ】ステートメントを使用して条件分岐です。
Worksheet【ワークシート】オブジェクトの
AutoFilterMode【オートフィルターモード】プロパティを使用して
AutoFilterMode【オートフィルターモード】プロパティの値がTrueのとき
つまり、ワークシートにオートフィルターが設定されているときを
定義します。
次の、データが抽出されているか判定する
AutoFilter【オートフィルター】オブジェクトの
FilterMode【フィルターモード】プロパティは
AutoFilter【オートフィルター】オブジェクトを表す
オートフィルターがワークシートに設定されていないとエラーになるので
ここでオートフィルターが設定されているか条件分岐をします。


3行目
【If ActiveSheet.AutoFilter.FilterMode = True Then】

ワークシートにオートフィルターが
設定されている場合に実行される処理です。
If【イフ】ステートメントを使用して条件分岐します。
Worksheet【ワークシート】オブジェクトの
AutoFilter【オートフィルター】プロパティを使用して
ワークシートに設定されている
オートフィルターを表す
AutoFilter【オートフィルター】オブジェクトを取得して
AutoFilter【オートフィルター】オブジェクトの
フィルターで抽出されているかどうかを返す
FilterMode【フィルターモード】プロパティの戻り値がTrueだったとき
つまりフィルターでデータが抽出されているときを定義します。


4行目
【MsgBox “データは抽出されています。”】

上記の条件分岐で条件が成立した場合
つまり、フィルターでデータが抽出されている場合
MsgBox関数を使用してメッセージを表示します。


5行目~6行目
【Else
MsgBox “データは抽出されていません。”】

Else【エルズ】キーワードを使用して
条件が成立しなかった場合
つまり、フィルターでデータが抽出されていない場合
MsgBox関数を使用してメッセージを表示します。


8行目~9行目
【Else
MsgBox “オートフィルターが設定されていません。”】

最初の条件分岐、つまり、
オートフィルターが設定されていない場合
MsgBox関数を利用してメッセージを表示します。


Filters【フィルターズ】プロパティ

オートフィルター範囲でのすべてのフィルターを表す
Filters【フィルターズ】コレクションを取得するには
AutoFilter【オートフィルター】オブジェクトの
Filters【フィルターズ】プロパティを使用します。

Filters【フィルターズ】プロパティの書式

[]内は省略可能
オブジェクト.Filters( [Index] )
【戻り値】Filtersコレクション Indexを指定した場合はFilterオブジェクト


設定値(引数)の説明

  • オブジェクト(必須)
    Worksheetオブジェクトの
    AutoFilter【オートフィルター】プロパティまたは
    Range【レンジ】オブジェクトの
    AutoFilter【オートフィルター】メソッドで取得した
    オートフィルターを表す
    AutoFilter【オートフィルター】オブジェクトを指定します。
  • Index【インデックス】(省略可)
    単体のオートフィルターのフィルターを表す
    Filter【フィルター】オブジェクトを取得するには
    取得するフィルターの列を左から数えたインデックス番号で指定します。

Filter【フィルター】オブジェクトの主なプロパティ一覧

プロパティ内容
Criteria1
【クリエイターワン】
指定したフィルターの
1つめの抽出条件の値を返します。
値の取得のみ可能です。
バリアント型(Variant) の値が返ります。
Criteria2
【クリエイターツゥ】
指定したフィルターの
2つめの抽出条件の値を返します。
値の取得のみ可能です。
バリアント型(Variant) の値が返ります。
On
【オン】
フィルターで抽出されている場合はTrue
抽出されていない場合はFalseが返ります。
値の取得のみ可能です。
ブール型(Boolean)の値が返ります。

Range【レンジ】プロパティ

オートフィルターが設定されているセル範囲を取得するには
AutoFilter【オートフィルター】オブジェクトの
Range【レンジ】プロパティを使用します。

Range【レンジ】プロパティの書式

[]内は省略可能
オブジェクト.Range
【戻り値】Rangeオブジェクト


設定値(引数)の説明

  • オブジェクト(必須)
    Worksheetオブジェクトの
    AutoFilter【オートフィルター】プロパティまたは
    Range【レンジ】オブジェクトの
    AutoFilter【オートフィルター】メソッドで取得した
    オートフィルターを表す
    AutoFilter【オートフィルター】オブジェクトを指定します。

オートフィルター設定範囲を取得するコード例

Sub フィルター範囲()
If ActiveSheet.AutoFilterMode = True Then
   MsgBox ActiveSheet.AutoFilter.Range.Address
End If
End Sub

実行結果


以上で
オートフィルターを表すAutoFilterオブジェクトについての
解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク