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