如何检测工作表上是否更改了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更改时要执行的命令和操作

结束小组

  • 现在,你已经完成了