Ich versuche, eine Pivot-Tabellenspalte (GP#
) aus einem Array zu filtern (in diesem Beispiel verkürzt).Pivot-Tabelle mit Werten in VBA filtern
Der Filter funktioniert, aber wenn ich auf eine Zahl (in diesem Fall 83292
) erhalten, die nicht im Filter, die Excel mit dem Fehler abstürzt:
Laufzeitfehler 1004 Anwendung definiert oder Objekt -definierter Fehler
Gibt es eine Möglichkeit zu überprüfen, ob eine Nummer/ein Name usw. im Filter ist und ob sie dann zum Filtern gilt?
Mein Code:
vGP = Array("83041", "83327", "83292")
ActiveSheet.PivotTables("PivotTable1").ManualUpdate = True
With ActiveSheet.PivotTables("PivotTable1").PivotFields("GP#")
.PivotItems(1).Visible = True
' below code ensure pivot table filter does not cause error by not having anything in the filter
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
If .PivotItems(i).Visible Then .PivotItems(i).Visible = False
Next i
' goes through array and adds any value in array
For Each i In vGP
.PivotItems(i).Visible = True
Next i
On Error GoTo 0
Kann jemand bitte sicherstellen helfen, dass die Werte im Array können auf den Filter und Werte im Array hinzugefügt werden, die nicht in der Pivot-Tabelle ist, werden ignoriert
So scheint diese Frage bei https://stackoverflow.com/questions/45718045/pivotfields-multiple-filter/45726720#45726720 genau dasselbe wie die vorherige Frage zu fragen, dass ich schon mit einigen sehr beantwortet effizienter Code. – jeffreyweir
Darüber hinaus hat Ihr Code oben mehrere Designfehler, von denen ich beide mit der ursprünglichen Antwort programmiert habe. Die Zeile "If .PivotItems (i) .Visible Then .PivotItems (i) .Visible = False" ist vollständig redundant, und die nächste Schleife muss in eine 'On Error Resume Next' gehüllt werden. Was ist der Sinn, wenn wir Ihre Fragen beantworten, wenn Sie die vorherige Antwort, die perfekt funktioniert, völlig ignorieren? – jeffreyweir