2013-08-23 133 views
0

我試圖製作一個宏來更改幾個數據透視表(不是全部)的過濾器,但是我在數據透視表上看到一個錯誤,下面是我的代碼示例:無法獲取數據透視表類的PivotFields屬性

Sheets("Sheet1").PivotTables("PivotTable" & pivot_counter).PivotFields(_ 
"[year].[year].[year]").VisibleItemList = Array("") 

我的問題是:

1-使用VisibleItemList時,爲什麼我們使用透視字段(「【同期】【同期】【同期】。」)?爲什麼我們不得不重複它,它的含義是什麼,在任何地方都不能做任何事情。

2-這個代碼有什麼錯誤?我的數據透視表有一個名爲「年」的字段,過濾器設置爲特定年份(比如說2013),我希望它在所有可能的年份都有所改變。

+0

這是錄音代碼嗎?如果沒有,當你爲這一步記錄代碼時,它看起來像你的示例代碼? –

+0

當我記錄此步驟的代碼時,我得到以下代碼: ActiveSheet.PivotTables(「PivotTable1」)。PivotFields(「year」)。 _ 當前頁= 「(全部)」 隨着ActiveSheet.PivotTables( 「PivotTable1」)。透視字段( 「年」) .PivotItems( 「」)。可見=真 .PivotItems( 「1900」)。可見=真 .PivotItems(「2009」)。Visible = True .PivotItems(「2010」)。Visible = True .PivotItems(「2011」)。Visible = True .PivotItems(「2012」)。Visible = True .PivotItems (「2013」​​)。Visible = True .PivotItems(「2014」)。Visible = True End With – Miticus

+0

問題是,來自記錄宏的代碼顯示了該過濾器結果的所有可能解決方案。我想自動執行此操作,而不用枚舉它們。因爲,我將在我的數據透視表中爲其他幾個過濾器執行此操作,並且這些字段可能會隨時間而改變(例如,不是從2009年到2014年,而是從2007年到2019年)。 – Miticus

回答

0
Sub Tester() 
    ShowAll ActiveSheet.PivotTables("PivotTable1").PivotFields("Year") 
End Sub 


Sub ShowAll(pf As PivotField) 
    Dim pi As PivotItem 
    Application.ScreenUpdating = False 
    For Each pi In pf.PivotItems 
     pi.Visible = True 
    Next pi 
    Application.ScreenUpdating = True 
End Sub 
+0

它並沒有真正做任何事:S。我想從現在選擇的所有過濾器更改爲默認(全部)。 – Miticus

+0

好的,我解決了它。但我無法發佈我的答案,因爲我是新用戶,在提問後至少需要等待8個小時。但我結束了使用你的宏ShowAll。謝謝您的幫助。 :) – Miticus