首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让“清晰切片器”代码更有效率?

如何让“清晰切片器”代码更有效率?
EN

Stack Overflow用户
提问于 2013-09-20 22:22:51
回答 3查看 19.1K关注 0票数 0

我在Excel2010中的摘要工作表上使用了六个切片器。每个切片器连接到26个数据透视表。

我在过去使用了下面的代码来清除切片器选择,它的延迟最小。这一次,代码需要6-7秒才能执行。

代码语言:javascript
复制
Dim oSlicerC As SlicerCache

For Each oSlicerC In ActiveWorkbook.SlicerCaches
    oSlicerC.ClearManualFilter
Next oSlicerC

我在网上找不到任何可以加速宏/使其更有效的东西。

我尝试将ScreenUpdatingDisplayAlertsEnableEvents设置为False,并在代码开头尝试将Calculation设置为xlCalculationManual

我考虑过遍历每个SlicerItem以取消选择每个条目,但由于在几个切片器中有多达100个条目,我不确定这是否会更快。

我不是在寻找代码,因为我想自己尝试一下,但我不确定我应该走哪条路,或者是否有比我已经使用的更有效的替代方案。

EN

回答 3

Stack Overflow用户

发布于 2015-04-02 02:06:57

我也遇到了类似的问题,最终解决了:

代码语言:javascript
复制
Dim oSlicerC As SlicerCache
For Each oSlicerC In ActiveWorkbook.SlicerCaches
If oSlicerC.FilterCleared = False Then oSlicerC.ClearManualFilter
Next oSlicerC`
票数 5
EN

Stack Overflow用户

发布于 2018-04-26 16:40:02

这是一个古老的帖子,但也有另一种可能性。

如果数据在excel表中,则可以调用该表。

代码语言:javascript
复制
tbl.AutoFilter.ShowAllData

这也会非常快地重置所有切片器。

在我的程序之间有173'561行和其他东西。

对于上面的每个示例: 6.88秒我的示例: 6.92秒

也许会有这样一种情况,那就是其中一个更快。例如,它必须重置更多,而不仅仅是几个切片器我的版本应该更快。

票数 0
EN

Stack Overflow用户

发布于 2019-10-29 15:03:12

我看到它很久以前就发布了,但这仍然是有用的:我只是为sliceritem定义了两个参数,在循环第一个项目的同时,运行另一个循环来取消选择全部。“”“

代码语言:javascript
复制
For Each oSi In oScR.SlicerItems
    If oSi.HasData Then
        For Each oSiT In oScR.SlicerItems:
            If oSiT.HasData Then oSiT.Selected = False
        Next
        oSi.Selected = True

    End If
Next

“”“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18919106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档