我在两个工作表中有一堆(14 个)数据透视表(每个工作表中 7 个)。
我在工作表上有一个刷新按钮,可以使用以下代码刷新所有数据透视表:
Sub Refresh_Pivots()
Dim pt As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each pt In WS.PivotTables
pt.RefreshTable
Next pt
Next WS
End Sub
所有数据透视表的结构都相似,并且所有数据透视表中都有一个名为“Month”的字段。当我单击“刷新”时,我需要从所有数据透视表中的数据透视字段“Month”中过滤掉“(blank)”。
为此,我在 pt.RefreshTable 之后的嵌套 For 循环下添加了这一行 -
pt.pf("month").pi("(blank)").ShowDetail = False
所以修改后的代码是:
子刷新枢轴()
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each pt In WS.PivotTables
pt.RefreshTable
pt.pf("month").pi("(blank)").ShowDetail = False
Next pt
Next WS
End Sub
但是,我遇到了编译错误。我不明白为什么。我对 VBA 还比较陌生,所以如果这个问题很愚蠢,我很抱歉。
另外,我需要数据中的那些空白,只需将它们从数据透视表中过滤掉即可。谢谢。
答案1
我认为您需要用 PivotFields 替换 pf,用 PivotItems 替换 pi