使用“For Each”将相同的filter应用于工作表中的所有数据透视表

我想这是一个简单的问题,但由于我是新的VBA,我只是无法弄清楚。 我有这个代码转到Pivot table1 ,selectDATA透视字段和筛选此字段的一些值。

 Sub Multiple_Filtering() Dim pf As PivotField Set pf = ActiveSheet.PivotTables("Pivot table1").PivotFields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True End Sub 

我想要做的是做一个循环,对工作簿中的所有工作表中的所有数据透视表执行相同的操作。

我发现这段代码使用“For each”句子来设置工作簿中所有数据透视表的数据源,但是我无法将其修改为我的代码。

 Dim sht As Worksheet Dim pvt As PivotTable For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables pvt.ChangePivotCache _ ThisWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SourceAddress) pvt.RefreshTable Next pvt Next sht 

有任何想法吗?

 Sub Multiple_Filtering() Dim pf As PivotField Dim sht As Worksheet Dim pvt As PivotTable For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables Set pf = pvt.PivotFields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True Next pvt Next sht End Sub 

我相信这应该整合在那里显示的两段代码

 Sub Multiple_Filtering() Dim sht As Worksheet Dim pvt As PivotTable Dim pf As PivotField For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables Set pf = sht.PivotTables(pvt).Pivotfields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True 'Admittedly not sure if this is necessary pvt.RefreshTable Next pvt Next sht End Sub