オートフィルタの状況を確認(AutoFilterMode, FilterMode)
2016/07/18
AutoFilterMode プロパティ
AutoFilterMode プロパティ(Worksheet オブジェクト)を調べることで、ワークシート上にオートフィルタが設定されているかどうかを確認することができます。ちなみに、オートフィルタは、1つのワークシート上に1つしか設定することができません。
object.AutoFilterMode = boolean
引数・戻り値
- object ・・・ 対象となる Worksheet オブジェクトを指定します。
- boolean ・・・ False のみ設定することができます。False を指定すると、オートフィルタが解除されます。(※ True を指定するとエラーが発生します)
AutoFilter プロパティ(Worksheet オブジェクト)でも確認可能です。オートフィルタが設定されている場合、AutoFilter オブジェクトを返します。設定されていない場合、Nothing を返します。
【オートフィルタが設定されているかどうかを確認する例】
Dim myFilter As AutoFilter
Set myFilter = Activesheet.AutoFilter
If myFilter Is Nothing Then
’オートフィルタが設定されていない場合の処理
Else
’オートフィルタが設定されている場合の処理
End If
FilterMode プロパティ
FilterMode プロパティ(AutoFilter オブジェクト)を調べることで、オートフィルタが何らかの条件で絞りこまれているかどうかを調べることができます。ただし、Excel 2007 以降のみ使用可能です。
object.FilterMode
引数・戻り値
- object ・・・ 対象となる Worksheet オブジェクト または、AutoFilter オブジェクト を指定します。
- オートフィルタが絞りこまれている場合、True を、そうでない場合は、False を返します。ブール型(Boolean)の値を使用します。値の取得のみ可能です。
オートフィルタの状況確認 FilterMode プロパティを使用した例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub Sample05_1_AutoFilter() Dim myFilter As AutoFilter Set myFilter = ActiveSheet.AutoFilter 'オートフィルタが設定されているかどうかを確認 If Not myFilter Is Nothing Then 'オートフィルタが絞りこまれているかどうかの確認 If ActiveSheet.AutoFilter.FilterMode Then MsgBox "オートフィルタは、絞りこまれています" Else MsgBox "オートフィルタは、絞りこまれていません" End If Else MsgBox "オートフィルタは設定されていません" Exit Sub End If End Sub |
実行結果
Filter.On プロパティ
FilterMode プロパティは、Excel 2007 以降のバージョンでしか使用できないので、それまでのバージョンで判定するには、各列ごとに絞り込みが行われているかどうかを確認します。それを行うには、Filters コレクション から各列の Filter オブジェクト を取得し、On プロパティ(Filters.Item(index).On)の値(ブール型)を調べます。その列が絞り込まれている場合、True を返します。
<各列のオートフィルタが絞りこまれているかを取得>
object.Filters[ .Item ](index).On
<列数を取得>
object.Filters.Count
引数・戻り値
- object ・・・ 対象となる Worksheet オブジェクトを指定します。
- index ・・・ 長整数型(Long)のオブジェクトのインデックス番号を指定します(つまり、各列を表します)。
オートフィルタの状況確認 Filter.On プロパティを使用した例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
Sub Sample05_2_AutoFilter() Dim flg As Boolean, i As Long, str As String flg = False 'オートフィルタが設定されているかどうかを確認 If ActiveSheet.AutoFilterMode Then For i = 1 To ActiveSheet.AutoFilter.Filters.Count 'オートフィルタが絞りこまれている場合、flg を True If ActiveSheet.AutoFilter.Filters.Item(i).On Then flg = True str = str & i & "列目 " End If Next i Else MsgBox "オートフィルタは設定されていません" Exit Sub End If If flg Then MsgBox "オートフィルタは、" & str & "で絞りこまれています" Else MsgBox "オートフィルタは絞りこまれていません" End If End Sub |
実行結果
関連記事
-
-
セルの位置を取得(Left プロパティ、Top プロパティ)
Left プロパティ・Top プロパティ Left プロパティは、「A列」の左端 …
-
-
フリガナの設定(SetPhonetic メソッド)
フリガナの設定(SetPhonetic メソッド) SetPhonetic メソ …
-
-
セル・セル範囲に名前を定義・削除(Name プロパティ・Names コレクション)
セル・セル範囲に名前を定義(Name プロパティ) Range オブジェクトのN …
-
-
セルの高さ・幅を取得(Height プロパティ・Width プロパティ)
Height プロパティ・Width プロパティ Height プロパティは、指 …
-
-
文字の向きを表す値を取得・設定する(Orientation プロパティ)
Orientation プロパティ Orientation プロパティで、文字列 …
-
-
対象のセルを参照している全てのセルを取得(Dependents プロパティ)
Dependents プロパティ Dependents プロパティは、対象のセル …
-
-
セルの表示形式を設定・取得する(NumberFormat プロパティ)
NumberFormat プロパティ NumberFormat プロパティは、現 …
-
-
引数に指定したセル範囲の共通のセル範囲を取得(Intersect メソッド)
Intersect メソッド Intersect メソッドは、引数に指定したセル …
-
-
文字列の縦位置を取得・設定する(VerticalAlignment プロパティ)
VerticalAlignment プロパティ VerticalAlignmen …
-
-
オートフィルタ(色で抽出する)AutoFilter メソッド
オートフィルタ(色で抽出する) フォントの色、セルの背景色(条件付き書式による設 …