![如何防止多个 PivotTableUpdate 触发器](https://linux22.com/image/1543595/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E5%A4%9A%E4%B8%AA%20PivotTableUpdate%20%E8%A7%A6%E5%8F%91%E5%99%A8.png)
我正在构建一个仪表板,其中 3 个滑块控制第二个数据表上的 10 个数据透视表。我还绘制了一张基于数据透视表的地图。这是由一个宏填充的,每次在切片器上进行选择时都需要触发该宏。在阅读了旧问题和其他论坛后,我使用了以下代码,将其放置在包含数据透视表的表中。
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Application.EnableEvents = False
Call UpdateMaps
Application.EnableEvents = True
End Sub
这样,滑块的变化做激活宏来更新地图,但尽管启用了 EnableEvents,它还是会触发 10 次;每个数据透视表各触发一次,因此非常慢。我是不是漏掉了什么?有没有办法只触发一次宏,这会在所有数据透视表从切片器选择中完成更新后发生?
答案1
您可以限制它在特定数据透视表已更新时运行,如下所示:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = "PivotTable1" then UpdateMaps
End Sub
不必关闭事件。将“PivotTable1”更改为其中一个数据透视表的名称(除非您的工作簿中已经有一个名为“PivotTable1”的数据透视表)