【发布时间】:2010-11-24 15:25:52
【问题描述】:
在excel工作簿项目中,我们如何检测某些工作表上的过滤器是否更新?
【问题讨论】:
在excel工作簿项目中,我们如何检测某些工作表上的过滤器是否更新?
【问题讨论】:
确保您有一个包含整列数据的公式(例如 COUNT)。对于表格,打开Total行。
当过滤器更改时,Excel 计算事件将因为公式而触发,您可以通过将以下代码插入工作表中来选择它。
Private Sub Worksheet_Calculate()
MsgBox "Calculation"
End Sub
您的工作表需要设计为仅包含数据,否则需要代码来确定工作表上的计算事件是否不是由于过滤器的更改而产生的。
您需要添加代码来获取过滤器值。关注 Filter 类成员,如 Citeria1、Criteria2、Operator、On 等。
【讨论】:
=SUBTOTAL(3,... 计算过滤器的结果。在 Worksheet_Calculate 例程中,将该值存储在模块范围的变量中,并将其与上一个状态进行比较 - 每次更改时,您就知道过滤器已更改。当然,当过滤器更改但结果计数相同时,这仍然存在。那么罗伯特的最后一句话会对你有所帮助......
我的案例是一个 Excel 数据库。我创建了一个标签,指示“过滤项目数”或“会议实例数”,因此当您使用下拉过滤器进行过滤时,此标签将更新。我没有找到任何“过滤器更改”事件。我尝试了上述方法,如下所示:
Private Sub Worksheet_Calculate()
' 过滤器更改时要执行的命令和操作
结束子
【讨论】: