问题描述
我需要做的是检查(使用VBA)以下过滤器是否应用于 Manager 列:
一些研究使我进入了Worksheets(1).AutoFilterMode
,它只能告诉您是否应用了过滤器。
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