如何检测工作表上的过滤器是否已更改?

时间:2009-09-01 12:55:22

标签: excel filter vsto

在excel工作簿项目中,我们如何检测某些工作表上的过滤器是否已更新?

2 个答案:

答案 0 :(得分:2)

确保您有一个包含整个数据列的公式(例如 COUNT )。如果是表格,请启用总计行。

更改过滤器后,Excel计算事件将因公式而触发,您可以通过将以下代码插入到工作表中来进行选择。

Private Sub Worksheet_Calculate()

 MsgBox "Calculation"

End Sub

您的工作表需要设计为仅包含数据,否则将需要使用代码来确定工作表上的计算事件是否由于过滤器更改而产生。

您需要添加代码来获取过滤器值。专注于过滤类成员,如Citeria1,Criteria2,Operator,On等。

答案 1 :(得分:1)

我的案例是Excel数据库。我创建了一个标签,指示“已过滤项目数”或“会议实例数”,这样当您使用下拉过滤器进行过滤时,此标签将会更新。我没有找到任何“过滤器更改”事件。我尝试了上面描述的方法,如下所示:

  • 在工作表中选择您不愿意使用的单元格
  • 将单元格的公式设置为“= count(B:B)”或“= counta(C:C)”或任何取决于整个列的公式。确保单元格不在同一列中
  • 将此辅助单元格的格式设置为“custom”,并将格式设置为“;;;”所以单元格内容将不可见
  • 在VBA中,使用“工作表计算”事件来执行代码

Private Sub Worksheet_Calculate()

'过滤器更改时要执行的命令和操作

End Sub

  • 现在,你已经完成了