Excel VBA – 一次select多个切片器项目而不刷新

我试图从一个切片器中select和取消select多个切片器项目,而不会触发更新,直到完成所有select。 我可以很简单地在Excel前端通过按住Ctrl键单击我想要的所有选项来完成此操作。 但是,当我用这种行为logging一个macros并运行它时,它会在每次select/取消select之后更新(logging的macros只是在With块中的一堆.Selection = True/False语句)。

我已经尝试使用SlicerCaches.VisibleSlicerItemsList函数,但是会引发1004应用程序错误 – 即使我已经使用SlicerItem.Name字段来填充数组:

 Dim tntw(0 To 2) as Variant For i = 0 To 2 tntw(i) = sc.SlicerItems(i + 1).Name Next i sc.VisibleSlicerItemsList = tntw 

我也尝试设置所有依赖数据透视表手动更新为此,以及试图将application.calculation设置为手动(并切换回到最后),但都没有完成我在找什么。

有任何想法吗?

在你select之前

 Application.Calculation = xlmanual 

在您select之后

 Application.Calculation = xlautomatic 

这对我来说是完美的。 我有同样的问题。

作为@ joseph4tw张贴在评论中,所有真正需要的是Application.EnableEvents = False行。 但是,在最后的切片机重复使事件真正开始之前,我需要重新启用事件。 我再也没有访问代码(以前的工作),但想象一下,解决scheme包括计算切片器的数量,并在循环调用的n-1处重新启用事件。