AutoFilter 对象 (Excel)

代表对指定工作表的自动筛选。

注意

When using AutoFilter with dates, the format should be consistent with English date separators ("/") instead of local settings ("."). A valid date would be "2/2/2007", whereas "2.2.2007" is invalid.

注意

例如,使用对象 (, 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。