[英]excel 2010 vba loop pivot tables
我有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
替換為一個遍歷該PivotTable10
表列表的變量。 現在,我的代碼是上面代碼的16個塊。 我對循環知之甚少,但在我的Google搜索中卻找不到這種循環的好例子。
編輯:最終代碼工作了,下面的兩個答案都完美地工作,此代碼只是稍快一點
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
試試這個代碼。 此代碼將迭代工作表中的所有可旋轉軸。
Sub IteratePivots()
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
End Sub
這有點駭人聽聞,但這樣的技巧可能會達到目的:
Dim pt As PivotTable
Dim ws As Worksheet
Dim names As Variant
Dim found As Boolean
Set ws = ActiveWorkbook.ActiveSheet
names = Split("MSP,MSP30,FSP,FSP30,MRP,MRP30,FRP,FRP30,MPP,MPP30,FPP,FPP30,MCP,MCP30,FCP,FCP30", ",")
For Each pt In ws.PivotTables
found = False
For i = 1 To UBound(names)
If pt.Name = names(i) Then
found = True
End If
Next i
If found Then
pt.PivotFields("count").ClearAllFilters
pt.PivotFields("scrap code").ClearAllFilters
pt.PivotFields("count").ShowAllItems = True
pt.PivotFields("count").PivotItems("0").Visible = False
End If
Next pt
您可能會注意到我笨拙的檢查,以查看名稱是否在數組中……這是一個更好的解決方案:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.