如何检查是否使用VBA在Excel中应用了特定过滤器?

问题描述

我在工作表中有以下数据:

enter image description here


我需要做的是检查(使用VBA)以下过滤器是否应用于 Manager 列:

enter image description here


,以便数据看起来像这样:

enter image description here

一些研究使我进入了Worksheets(1).AutoFilterMode,它只能告诉您是否应用了过滤器。

最后,我遇到了this的答案,并尝试了以下代码

Dim datarange as Range

Set datarange = Worksheets("Sales Data").Range("B2:B11")

If testrange.SpecialCells(xlCellTypeVisible).Count = 4 Then
    ' some code
End If

目前,它运行良好。我知道这不是一个完美的解决方案。更改数据将无法使用。有什么方法可以检查 Manager 列是否被 Manager 1 过滤?

解决方法

您可以尝试类似的事情

Sub TestFilter()

    Dim I As Long
    
    With Worksheets(1).AutoFilter
        For I = 1 To .Filters.Count
            If .Filters(I).On Then
                MsgBox "Column: " & I & "; Criteria1: " & .Filters(I).Criteria1
            End If
        Next I
    End With
    
End Sub

如果您只有一个条件,则效果很好,否则该语句

             MsgBox "Column:" & I & "; Criteria1:" & .Filters (I) .Criteria1

将导致运行时错误。

要获取列标题,您可以使用

                MsgBox "Column: " & .Range(1,I) & "; Criteria1: " & .Filters(I).Criteria1