Ich habe 2 Pivot-Tabellen in meiner Arbeitsmappe und ich habe den folgenden Code, um die Datenquelle dynamisch zu ändern, und die Pivot-Tabellen zu aktualisieren. Der Code wird ordnungsgemäß ausgeführt, während er die erste For Each pt
-Schleife durchläuft und die erste Pivot-Tabelle aktualisiert wird. Wenn es jedoch für die zweite Pivot-Tabelle geschleift wird, stürzt der Code bei pt.ChangePitvotCache
mit einem Fehler:Laufzeitfehler '5': Ungültiger porcedure Aufruf oder Argument
Run-time error = '5': invalid procedure call or argument"
Hat jemand in der Lage zu helfen, warum dies nicht so schnell, wie ich mehr als 1 Pivot- funktioniert habe Tabelle im Code?
Dim ws As Worksheet
Dim pvtCache As PivotCache
Dim pt As PivotTable
Dim newRange As String
Set DataSource = DataSht.Range("A1", DataSht.Range("A1").End(xlToRight).End(xlDown))
newRange = DataSht.Name & "!" & DataSource.Address(ReferenceStyle:=xlR1C1)
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=newRange)
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ChangePivotCache pvtCache
pt.RefreshTable
Next pt
Next ws
Danke Shai, Ihr Vorschlag funktioniert, aber nur in dem Fall, in dem der zweite PT keinen PivotCache mit dem ersten teilt. Ich habe jetzt einen geklonten PT auf einem neuen Blatt hinzugefügt und jetzt gibt der Code diesen Fehler auf der ersten For Each pt In ws.PivotTables loop ... – Mike
Eigentlich funktioniert es auch für diesen Fall als auch, hast du den Satz pvtCache zuvor entfernt die Schleife ? –
Ich habe den pvtCache vor der Schleife entfernt und immer noch den gleichen Fehler bekommen. Ich habe es geschafft, das Problem etwas einzuengen. Es scheint, als ob das Problem nur auftritt, wenn ein Slicer mit den geklonten Pivottabellen verbunden ist. – Mike