2

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

有任何想法吗?

4

2 回答 2

1

在您的选择放之前

Application.Calculation = xlmanual 

在您选择之后

Application.Calculation = xlautomatic

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

于 2013-12-18T14:43:37.040 回答
1

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

于 2014-08-18T20:07:06.720 回答