2017-08-30 1 views
0

Dies ist das aufgezeichnete Makro:Excel 2013 - aufgezeichnete Makro Fehler bei Seite Filterwechsel auf OLAP-basierte Pivot-Tabelle

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]" 

ich den tatsächlichen Namen auf „einige Namen“ für die Zwecke der Post geändert haben.

Ich habe dieses Makro aufgezeichnet und dann versucht, es auszuführen. Ich erhalte eine Fehlermeldung:

Unable to set the CurrentPage property of the PivotField Class

ich andere Beiträge angesehen haben, was auf die Verwendung von

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 

Dies auch versagt.

Antwort

0

Das ist zu einfach. Bevor ich eine Antwort schreibe, würde ich sehr empfehlen, dass Sie versuchen, Ihren Code in Zukunft ein wenig zu debuggen. Ihr Problem besteht darin, dass Sie versuchen, zwei Strings zu verketten, aber niemals den ersten zu schließen. Zum Beispiel:

Dim Foo as String 
Foo = "Apples" 

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

Probieren Sie es aus und sehen Sie, ob Sie entschlüsseln können, was passiert.

Jetzt für die Lösung. Gleicher Ansatz, geringfügige Korrektur:

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

Voila! Um Zeichenfolgen zu verketten, müssen Sie die Variable auf die gleiche Weise verwenden, wie Sie sie an anderer Stelle verwenden würden. Das heißt, die Variable außerhalb der Anführungszeichen setzen und die Teile miteinander verketten.

Beachten Sie, beide funktionieren nur, wenn pt.EnableMultiplePageItems = False und die PivotField eine PageField ist. Darüber hinaus ist der Grund, warum Ihre zweite Version nicht funktioniert, weil ein OLAP Würfel "some name" nicht erkennt. Es muss die gesamte Dimension kennen, z. B. "[Foo].[Bar].[Baz].[Item]"

Während ich hier bin, empfehle ich dringend die ActiveSheet Referenz zu vermeiden. Das wird Probleme auf der ganzen Linie verursachen. Ich empfehle Ihnen, auch Ihre Pivot-Tabellen zu benennen. Verdammt, nennen Sie alles, was Sie benutzen. Es macht Ihren Code einfacher zu lesen.

+0

Hallo Brandon, Vielen Dank für Ihre Antwort. Hier ist der aufgezeichnete Code. Es ist fehlerhaft, wenn ich es versuche und es ausführe. ActiveSheet.PivotTables ("PivotTable1"). PivotFields (_ "[Standort]. [Verkaufsregion - Standort]. [Verkaufsregion]") ClearAllFilters ActiveSheet.PivotTables ("PivotTable1"). PivotFields (_ "[Location ]. [Verkaufsregion - Ort]. [Verkaufsregion] "). CurrentPage = _ " [Ort]. [Verkaufsregion - Ort]. [Verkaufsregion]. & [Craig] " – ScanGuard

+0

@ScanGuard Ist das' EnableMultiplePageItems = Falsches Set? Sind Sie sich sicher, dass 'Craig' in der Dimension 'Verkaufsregion' liegt? –

+0

Hallo Brandon. Der Code ist wie tatsächlich aufgezeichnet, also ja, Craig ist in der Dimension. Das EnableMultiplePageItems Kontrolle-Kästchen ist nicht aktiviert. – ScanGuard