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オブジェクトについての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告