如何防止多个 PivotTableUpdate 触发器

如何防止多个 PivotTableUpdate 触发器

我正在构建一个仪表板,其中 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”的数据透视表)

相关内容