2017-02-23 121 views
1

我有一個數據透視表「IncTrend」,帶有2個過濾器。 兩個我已經更名爲「服務1」和「服務2」過濾器(他們原本當表從PowerPivot的創建都被稱爲服務)基於單元值的VBA數據透視表過濾器更改

在工作表中的A2我有命名服務驗證列表的名稱過濾器中的項目(它們完全匹配)。

我正在嘗試編寫一個VBA代碼,它將讀取A2中的「選項」,並將數據透視表過濾器「Service1」&「Service2」更改爲與之匹配。

前提是我將有許多不同的數據透視表,其中包含我需要更改過濾器以匹配的不同數據透視表,但我甚至無法使用VBA獲得更改。

我不斷收到

無法獲取數據透視表類

任何援助將不勝感激的透視字段屬性。 這是數據透視表的SS。

enter image description here

我的代碼是:

Sub Filter_Change() 

Dim WS As Worksheet: Set WS = ActiveWorkbook.Worksheets("Main") 
Dim PT1 As PivotTable: Set PT1 = WS.PivotTables("IncTrend") 
Dim PF1 As PivotField: Set PF1 = PT1.PivotFields("[Inc Open].[Service].[Service]") 
Dim Choice As String: Choice = Worksheets("Main").Range("A2").Value 

With PF1 
    .ClearAllFilters 
    .CurrentPage = Choice 
    '.PivotFilters.Add Type:=xlCaptionEquals, Value1:=Choice 
End With 
End Sub 
+0

你確定你的'PivotField'名字的拼寫方式「Service1」?之間沒有空間或東西? –

+0

我修改了它以確保它不會導致問題。我已編輯上面的代碼,顯示您的建議和我的更改。 – Fitzy

回答

0

替換您行:

PF1.CurrentPage.Name = Choice  

有了:

With PF1 
    .ClearAllFilters 
    .CurrentPage = Choice 
End With 
+0

謝謝你,我按照你的建議做了。它將篩選器更改爲(全部),但是當它到達當前頁面行時,出現「無法設置PivotField類的CurrentPage屬性」。我用.PivotFilters.Add交換了當前頁面的行。類型:= xlCaptionEquals,Value1:= WS.Range(「A2」)。Value並且現在得到「應用程序定義或對象定義的錯誤」 – Fitzy

+0

@Fitzy你可以編輯你的文章包括你的'PivtoTable'的屏幕截圖? –

+0

我已添加屏幕截圖 – Fitzy

相關問題