如何以编程方式重新应用数据过滤器?

时间:2011-09-06 08:40:10

标签: excel vba vsto

当工作表上的任何数据发生变化时,我需要重新应用过滤器。 Excel需要手动执行此操作。我如何以编程方式重新应用过滤器?

2 个答案:

答案 0 :(得分:3)

我认为最简单的方法是删除自动过滤器并重新应用它,这要归功于这种VBA代码(你可以将其改编为VSTO吗?):

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

找到代码on MSDN

[编辑]你也可以在这个帖子中找到一些有价值的信息:Reordering Excel Table Columns with Filters Intact(看评论)

答案 1 :(得分:0)

在日期字段的过滤器中使用树视图时,无法确定其标准。这就是为什么你需要一个临时的自定义视图来重新应用过滤器。请参阅this post