如何检测工作表上是否更改了filter?
在Excel工作簿项目中,我们如何检测某些工作表上的filter是否已更新?
确保你有一个包含整个数据列的公式(例如COUNT )。 在表格的情况下,打开总计行。
当filter被更改时,Excel计算事件将由于公式而触发,您可以通过将以下代码插入到工作表中来select该事件。
Private Sub Worksheet_Calculate() MsgBox "Calculation" End Sub
您的工作表需要devise为只有数据,否则需要使用代码来确定工作表上的计算事件是否由于filter更改而产生。
您将需要添加代码来获取filter值。 关注Filter类成员,如Citeria1,Criteria2,Operator,On等
我的情况是一个Excel数据库。 我创build了一个标签,指出“已过滤项目的数量”或“会议实例的数量”,以便在使用下拉filter进行过滤时,此标签将更新。 我没有find任何“filter更改”事件。 我尝试了上面描述的方法,如下所示:
- select您不希望使用的表格中的一个单元格
- 将单元格的公式设置为“= count(B:B)”或“= counta(C:C)”或取决于整个列的任何公式。 确保单元格不在同一列中
- 将该辅助单元的格式types设置为“custom”并将格式设置为“;;;” 所以单元格内容将不可见
- 在VBA中,使用“工作表计算”事件来执行您的代码
Private Sub Worksheet_Calculate()
'filter更改时要执行的命令和操作
结束小组
- 现在,你已经完成了