2017-08-30 72 views
0

改變網頁過濾器時,這是錄製的宏:的Excel 2013 - 錄製的宏錯誤在OLAP基於數據透視表

ActiveSheet.PivotTables("PivotTable1").PivotFields(_ 
    "[Location].[Sales Region - Location].[Sales Region]").ClearAllFilters 
ActiveSheet.PivotTables("PivotTable1").PivotFields(_ 
    "[Location].[Sales Region - Location].[Sales Region]").CurrentPage = _ 
    "[Location].[Sales Region - Location].[Sales Region].&[some name]" 

我已經改變了實際名稱爲「有些名」的帖子的目的。

我記錄了這個宏,然後試圖運行它。我得到一個錯誤:

Unable to set the CurrentPage property of the PivotField Class

我已經查看其他職位建議使用

Dim pt As PivotTable 
Dim NewRSM As String 

NewRSM = "some name" 

Set pt = ActiveSheet.PivotTables("PivotTable1") 

With pt 
    .PivotFields("[Location].[Sales Region - Location].[Sales Region]").ClearAllFilters 
    .PivotFields("[Location].[Sales Region - Location].[Sales Region]").CurrentPage = NewRSM 
End With 

pt.RefreshTable 

這也將失敗。

回答

0

這太容易了。在發佈答案之前,我強烈建議在未來嘗試調試您的代碼。你的問題是你試圖連接兩個字符串,但你永遠不會關閉第一個字符串。例如:

Dim Foo as String 
Foo = "Apples" 

Debug.Print "I like Foo!" 
Debug.Print "I Like " & Foo & "!" 

試一試,看看你是否可以解釋發生了什麼。

現在尋求解決方案。同樣的做法,小修正:

ActiveSheet.PivotTables("PivotTable1").PivotFields(_ 
"[Location].[Sales Region - Location].[Sales Region]").CurrentPage = _ 
"[Location].[Sales Region - Location].[Sales Region].&[" & SomeName & "]" 

瞧!要連接字符串,必須按照您在別處使用它的相同方式使用該變量。也就是說,將變量放在引號之外,並將這些部分拼接在一起。

值得注意的是,這兩種方法只適用於pt.EnableMultiplePageItems = FalsePivotFieldPageField。此外,您的第二個版本無法正常工作的原因是因爲OLAP多維數據集無法識別"some name"。它必須知道整個維度,例如"[Foo].[Bar].[Baz].[Item]"

雖然我在這裏,但我強烈建議避免ActiveSheet參考。這會導致你的問題。我建議命名您的數據透視表。哎呀,說出你使用的任何東西。它使您的代碼更易於閱讀。

+0

嗨布蘭登,謝謝你的迴應。這是錄製的代碼。當我嘗試並運行它時會出錯。數據透視表(_ 「[Location]。[Sales Region - Location]。[Sales Region]」)。銷售區域 - 位置]。[銷售區域]「)。CurrentPage = _ 」[Location]。[Sales Region - Location]。[Sales Region]。[Craig]「 – ScanGuard

+0

@ScanGuard是'EnableMultiplePageItems =假集?另外,你確定'Craig'在'Sales Region'維度中嗎? –

+0

嗨布蘭登。代碼和實際記錄的一樣,所以是的,Craig處於這個層面。 EnableMultiplePagePage項複選框不勾選。 – ScanGuard

相關問題