Excel VBA - 一次选择多个切片器项而不刷新

时间:2012-12-19 20:11:41

标签: excel excel-vba pivot-table vba

我正在尝试从单个切片器中选择和取消选择多个切片器项,而不会触发更新,直到我的所有选择都完成为止。我可以通过按住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设置为手动(并在最后切换回两者),但都没有完成我正在寻找的内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在您选择之前

Application.Calculation = xlmanual 

选择后

Application.Calculation = xlautomatic

这对我来说非常合适。我有同样的问题。

答案 1 :(得分:1)

正如@ joseph4tw在评论中发布的那样,真正需要的只是Application.EnableEvents = False行。但是,我需要在迭代最终切片器之前再次重新启用事件,以使事件实际触发。我不再能够访问代码(以前的工作),但想象一下解决方案涉及计算Slicers的数量,并在循环调用中以n-1重新启用事件。