2017-07-20 100 views
0

我有一個Excel工作簿,其中包含多個工作表,每個工作表上有多個數據透視表。我試圖遍歷每個數據透視表並將其「報告功能」過濾器更改爲從列表框中選擇的用戶指定值。所有數據透視表都有「報告功能」過濾器。VBA-「錯誤1004:無法獲取PivotField類的CurrentPage屬性」

我有大約50個數據透視表,並且代碼成功地更改了除8個樞軸點之外的所有濾鏡。這8個數據透視表的過濾器不會改變;相反,將返回錯誤「錯誤1004:無法獲取PivotField類的CurrentPage屬性」。

wHY是這段代碼爲少量的數據透視表返回這個錯誤嗎?

奇怪的是,它似乎是返回此錯誤的完全相同的數據透視表。

Sub ChangePivotFilter(str As String) 

Dim ws As Excel.Worksheet 
Dim aWB As Excel.Workbook 
Dim myPivot As Excel.PivotTable 
Dim myPivotField As Excel.PivotField 

Set aWB = ActiveWorkbook 
For Each ws In aWB.Worksheets 

    For Each myPivot In ws.PivotTables 
     Set myPivotField = Nothing 

     On Error Resume Next 
     Set myPivotField = myPivot.PivotFields("Report Function") 
     myPivotField.CurrentPage = str 
    Next myPivot 
Next ws 

End Sub 

任何幫助非常感謝!

+0

你肯定有任何的'str'爲「報告功能」'PivotField'匹配的結果?在所有表格中? –

+0

即使您有錯誤恢復下一步,您是否收到該錯誤? – Sam

+0

@Shai Rado是的,在所有數據透視表的報告功能字段中都有str的匹配。 – mark

回答

0

分配,或者如果透視字段是不是身體中的「頁面」(即一個「過濾器」)在它的數據透視表CurrentPage讀書會失敗:

PivotField in page

您可以編程方式發送透視字段到「頁」通過設置它的Orientation屬性xlPageField,如下所示:

myPivotField.Orientation = xlPageField 
相關問題