首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA清除所有切片器并刷新数据透视表Excel 2013

VBA清除所有切片器并刷新数据透视表Excel 2013
EN

Stack Overflow用户
提问于 2016-03-10 22:22:52
回答 1查看 2.6K关注 0票数 0

我正在寻找VBA清除所有切片和刷新数据透视表Excel 2013,然而,它打破了"ClearAllFilters“。我研究的每一件事都建议使用它。是否有更好的方法来刷新切片并显示所有结果。此外,还希望包括数据模型的刷新和数据透视表。

代码语言:javascript
复制
Public Sub RefreshSlicersOnWorksheet(ws As Worksheet)

Dim sc As SlicerCache
Dim scs As SlicerCaches
Dim slice As Slicer

Set scs = ws.Parent.SlicerCaches

If Not scs Is Nothing Then
    For Each sc In scs
        For Each slice In sc.slicers
            If slice.Shape.Parent Is ws Then
                slice.ClearAllFilters
                Exit For 'unnecessary to check the other slicers of the slicer cache
            End If
        Next slice
    Next sc
End If

结束子对象

我试过你的建议,然而,仍然有问题的ClearAllFilters。

代码语言:javascript
复制
    Sub Reset()
Dim pt As PivotTable

 Application.ScreenUpdating = False
 ActiveWorkbook.Model.Refresh
    RefreshSlicersOnWorksheet ActiveSheet
    For Each pt In ActiveSheet.PivotTables
        pt.RefreshTable
    Next pt
Application.ScreenUpdating = True
End Sub
Public Sub RefreshSlicersOnWorksheet(ws As Worksheet)
Dim pt As PivotTable
Dim slice As Slicer

For Each pt In ws.PivotTables
    For Each slice In pt.Slicers
        slice.SlicerCache.ClearAllFilters
    Next slice
    pt.PivotCache.Refresh
Next pt
End Sub
EN

回答 1

Stack Overflow用户

发布于 2016-03-10 22:57:35

ClearAllFilters方法应用于SlicerCache对象,而不是切割机对象。

更改:

代码语言:javascript
复制
slice.ClearAllFilters

至:

代码语言:javascript
复制
sc.ClearAllFilters

编辑:,您也可以从工作表中的PivotTables集合开始,然后从那里访问切片器。然后,您可以刷新透视表,如下所示:

代码语言:javascript
复制
Dim pt As PivotTable
Dim slice As Slicer

For Each pt In ws.PivotTables
    For Each slice In pt.Slicers
        slice.SlicerCache.ClearAllFilters
    Next slice
    pt.PivotCache.Refresh
Next pt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35928540

复制
相关文章

相似问题

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