excel - 如何使用 VBA 检查是否在 Excel 中应用了特定过滤器?
问题描述
我需要做的是检查(使用 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
推荐阅读
- sql - FROM 子句中的@table
- c++ - 高兴导致 glfwSwapBuffers 返回错误消息
- wordpress - appengine 上的连接 FTP wordpress 问题
- reactjs - 如何在 React 中制作一个显示增量值的输入滑块?
- python - Python Gurobi:在优化停止之前输出 MIPGap、运行时和求解细节
- python - TensorFlow 不兼容的形状二进制分类
- spring-boot - 是否可以通过单击 JSP 页面上的按钮来控制循环(forEach)?
- rust - 字符串变量赋值期间的 E0308
- python - Heroku dyno 没有出现
- c# - asp.net - 如何从 post 方法中获取价值