オートフィルターオブジェクト (Excel)AutoFilter object (Excel)

指定されたワークシートのオートフィルターを示します。Represents autofiltering for the specified worksheet.

注意

日付に AutoFilter を使用する場合は、ローカル設定の区切り記号 (".") ではなく英語の区切り記号 ("/") を使用した形式に従っている必要があります。When using AutoFilter with dates, the format should be consistent with English date separators ("/") instead of local settings ("."). "2007/2/2"は有効な日付ですが、"2007.2.2" は無効です。A valid date would be "2/2/2007", whereas "2.2.2007" is invalid.

注意

オブジェクト ( Interiorオブジェクトなど) を処理するには、オブジェクトへの参照を追加する必要があります。Working with objects (for example, the Interior object) requires adding a reference to an object. Set ステートメントの変数またはプロパティにオブジェクト参照を割り当てる方法については、こちらを参照してください。You will find more information about assigning an object reference to a variable or property in the Set statement.

Example

オートフィルターオブジェクトを取得するのにには、 Worksheetオブジェクトの**オートフィルター** のプロパティを使用します。Use the AutoFilter property of the Worksheet object to return the AutoFilter object. 各列のフィルターのコレクションを取得するには、Filters メソッドを使用します。Use the Filters property to return a collection of individual column filters. フィルター後の全体のセル範囲を表す Range オブジェクトを取得するには、Range プロパティを使用します。Use the Range property to return the Range object that represents the entire filtered range.

次の使用例は、現在のフィルターのアドレスとフィルター条件を格納し、新しいフィルターを適用します。The following example stores the address and filtering criteria for the current filtering, and then applies new filters.

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

ワークシートのオートフィルターオブジェクトを作成するには、ワークシートのセル範囲のオートフィルターを手動で有効にするか、またはrangeオブジェクトの**オートフィルター** メソッドを使用します。To create an AutoFilter object for a worksheet, you must turn autofiltering on for a range on the worksheet either manually or by using the AutoFilter method of the Range object. 次の例は、前の例で保存したモジュールレベル変数を使用して、最初のオートフィルターの Crew ワークシートに戻します。The following example uses the values stored in module-level variables in the previous example to restore the original autofiltering to the Crew worksheet.

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 

メソッドMethods

プロパティProperties

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.