leider habe ich ein Problem, per VBA alle Einträge einer PivotTabelle auf visible zu setzen.
Es gibt zwar beliebig viele Methoden das zu bewerkstelligen, z.B.
bloß sind die bei grossen Tabellen? ELEND langsam.
Ich habe z.B. 1300 Items und die For Each Schleife dauert xx Minuten (Ich habe das Ende noch nie abgewartet ). Aber jetzt bitte keine Seitenhiebe auf meine CPU Leistung ;-).
Sub PivotItemsAlleEinblenden(Feld As PivotField)
'Alle Einträge des Feldes einblenden
Dim Pivot_Item As PivotItem
For Each Pivot_Item In Feld.PivotItems
Pivot_Item.Visible = True
Next
End Sub
Probiert habe ich auch die Performance-Geeks mit
die bringen aber keine wirkliche Verbesserung.
Das Problem liegt in der Excel internen Verarbeitung der Schleife: Bei jedem Durchlauf wird die Ganze Tabelle geupdated, was sehr viel Zeit kostet.
Verwunderlich ist allerdings, daß bei der manuellen Eingabe in der Auswahlbox der Pivottabelle mit Klicken
von "(Alle anzeigen)" die Performance ganz und gar nicht leidet.
Wer jetzt glaubt Makrorecorder anschmeissen und schauen was passiert, wird enttäuscht.
Das Macro sieht in etwa so aus:
.PivotItems("D000004").Visible = True
.PivotItems("D014520").Visible = True
.PivotItems("D014565").Visible = True
.PivotItems("D014620").Visible = True
.PivotItems("D021063").Visible = True
Beim Abspielen hat man wieder genau das gleiche Performanceproblem.
Hat jemand eine Idee ? Danke für Eure Kommentare !