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