【发布时间】:2016-05-14 06:49:06
【问题描述】:
当用户按下按钮时,我需要更新 16 个数据透视表。需要运行的代码如下:
ActiveSheet.PivotTables("PivotTable10").PivotFields("count").ClearAllFilters
ActiveSheet.PivotTables("PivotTable10").PivotFields("scrap code").ClearAllFilters
ActiveSheet.PivotTables("PivotTable10").PivotFields("count").ShowAllItems = True
With ActiveSheet.PivotTables("PivotTable10").PivotFields("count")
.PivotItems("0").Visible = False
End With
数据透视表的名称是:
MSP,MSP30,FSP,FSP30,MRP,MRP30,FRP,FRP30,MPP,MPP30,FPP,FPP30,MCP,MCP30,FCP,FCP30
我想将PivotTable10 替换为一个循环遍历该数据透视表列表的变量。现在我的代码是上面代码的 16 块。我对循环知之甚少,并且在我的谷歌搜索中没有找到这种类型的循环的一个很好的例子。
编辑:最终代码有效,下面的两个答案都运行良好,此代码运行速度稍快
Sub IteratePivots()
Application.ScreenUpdating = False
On Error Resume Next
Worksheets("Analytics Admin").Activate
Dim pvtTables As PivotTables
Dim pvtTable As PivotTable
Set pvtTables = Application.ActiveSheet.PivotTables
For Each pvtTable In pvtTables
pvtTable.PivotFields("count").ClearAllFilters
pvtTable.PivotFields("scrap code").ClearAllFilters
pvtTable.PivotFields("count").ShowAllItems = True
With pvtTable.PivotFields("count")
.PivotItems("0").Visible = False
End With
Next
Application.ScreenUpdating = False
End Sub
【问题讨论】:
-
只有 Pivottable 名称才会在您的代码中发生变化,对吗?
-
那是正确的,我每次都会准确地运行 4 行(当唯一的值为 0 时,我可能需要添加一个错误更正)。
标签: vba excel loops pivot-table