AutoFilter オブジェクト (Excel)
指定されたワークシートのオートフィルターを示します。
注:
日付に AutoFilter を使用する場合は、ローカル設定の区切り記号 (".") ではなく英語の区切り記号 ("/") を使用した形式に従っている必要があります。 "2007/2/2"は有効な日付ですが、"2007.2.2" は無効です。
注:
オブジェクト ( Interior オブジェクトなど ) を操作するには、オブジェクトへの参照を追加する必要があります。 オブジェクト参照を変数またはプロパティに割り当てる方法の詳細については、 Set ステートメントを参照してください。
例
Worksheet オブジェクトの AutoFilter プロパティを使用して、AutoFilter オブジェクトを取得します。 各列のフィルターのコレクションを取得するには、Filters メソッドを使用します。 フィルター後の全体のセル範囲を表す Range オブジェクトを取得するには、Range プロパティを使用します。
次の例では、現在のフィルター処理のアドレスとフィルター条件を格納し、新しいフィルターを適用します。
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub ChangeFilters()
Set w = Worksheets("Crew")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
w.AutoFilterMode = False
w.Range("A1").AutoFilter field:=1, Criteria1:="S"
End Sub
ワークシートの AutoFilter オブジェクトを作成するには、ワークシートの範囲のオートフィルター処理を手動で、または Range オブジェクトの AutoFilter メソッドを使用してオンにする必要があります。 次の例は、前の例で保存したモジュールレベル変数を使用して、最初のオートフィルターの Crew ワークシートに戻します。
Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
メソッド
プロパティ
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。