我正在尝试从单个切片器中选择和取消选择多个切片器项,而不会触发更新,直到我的所有选择都完成为止。我可以通过按住Ctrl键单击我想要的所有选项,在Excel前端完成这项工作。但是,当我记录具有此行为的宏并运行它时,它会在每次选择/取消选择后更新(记录的宏只是.Selection = True/False
块中的一堆With
语句。
我尝试使用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设置为手动(并在最后切换回两者),但都没有完成我正在寻找的内容。
有什么想法吗?
答案 0 :(得分:1)
在您选择之前
Application.Calculation = xlmanual
选择后
Application.Calculation = xlautomatic
这对我来说非常合适。我有同样的问题。
答案 1 :(得分:1)
正如@ joseph4tw在评论中发布的那样,真正需要的只是Application.EnableEvents = False
行。但是,我需要在迭代最终切片器之前再次重新启用事件,以使事件实际触发。我不再能够访问代码(以前的工作),但想象一下解决方案涉及计算Slicers的数量,并在循环调用中以n-1重新启用事件。