次の方法で共有


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 のサポートおよびフィードバックを参照してください。