VBA更有效的“清除切片器”代码

ARi*_*ich 0 excel vba pivot-table excel-vba

我在Excel 2010的摘要表中使用了六个切片器。每个切片器都连接到26个数据透视表。

我过去使用下面的代码来清除切片器的选择,并且在最小延迟的情况下工作得很好。但是,这次代码需要6到7秒钟才能完全执行,这似乎不值得该功能。

Dim oSlicerC As SlicerCache

For Each oSlicerC In ActiveWorkbook.SlicerCaches
    oSlicerC.ClearManualFilter
Next oSlicerC
Run Code Online (Sandbox Code Playgroud)

我一直在寻找一种加速宏/使其更有效的方法,但是我在网上找不到任何东西。我尝试设置ScreenUpdatingDisplayAlertsEnableEventsFalse然后在代码开头尝试设置CalculationxlCalculationManual,但这并没有太大帮助。

我曾考虑过遍历每个对象SlicerItem以取消选择每个对象,但是在几个切片器中最多包含100个项目,我不确定这会更快。

是否有人对我如何能够做到这一点有任何想法?我不是在寻找代码,因为我想自己尝试一下,但是我不确定应该走哪条路,或者是否有比我已经在使用的方法更有效的选择。非常感谢!

小智 5

我有一个类似的问题,解决了:

Dim oSlicerC As SlicerCache
For Each oSlicerC In ActiveWorkbook.SlicerCaches
If oSlicerC.FilterCleared = False Then oSlicerC.ClearManualFilter
Next oSlicerC`
Run Code Online (Sandbox Code Playgroud)