Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pivottabelle - Berichtsfilter mit vba ändern

Pivottabelle - Berichtsfilter mit vba ändern
12.01.2013 22:35:50
Constantin
Hallo,
wer könnte mir einen Tipp geben zu folgendem Problem: In einer Aktualisierungsroutine (Private Sub Before Save ...) verwende ich den Befehl "ThisWorkbook.RefreshAll". Jetzt würde ich gerne noch bei allen Pivottabellen in Tabelle2 im Berichtsfilter den Wert einer Variablen (Jahr) als Kriterium einsetzen. Aufgezeichnet am Beispiel sieht es so aus:
ActiveSheet.PivotTables("PivotTable1").PivotFields("Year").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("Year").CurrentPage = "2013"
Zwei Filter sind jeweils gesetzt, nur den Filter mit "Year" möchte ich jeweils ändern.
Wie könnte so eine Schleife aussehen?
Über einen Vorschlag würde ich mir freuen.
Grüße, Constantin

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivottabelle - Berichtsfilter mit vba ändern
13.01.2013 02:15:36
fcs
Hallo Constantin,
probiere mal folgendes:
Sub aatest()
Dim pvTab As PivotTable
varPageWert As Variant
varPageWert = "2013"
For Each pvTab In ActiveWorkbook.Worksheets("Tabelle2")
pvTab.PivotFields("Year").ClearAllFilters
pvTab.PivotFields("Year").CurrentPage = varPageWert
Next
End Sub

Ich hatte früher aber schon Probleme bei dem Versuch per VBA den Wert von Seitenfeldern zu setzen, wenn es sich um Ziffernfolgen/Zahlen handelt. Excel machte dann intern irgendwelche Conversionen der Werte so das der Werte-Typ (Zahl/Text) zwischen Quelldaten und Seitenfeld nicht mehr übereinstimmte und zu Fehlern bei der Neuberechnung der Pivot führte.
Gruß
Franz

Anzeige
AW: Pivottabelle - Berichtsfilter mit vba ändern
13.01.2013 09:23:30
Constantin
Hallo Franz,
vielen Dank. Ich teste einfach mal, wie es mit Zahlen/Ziffern in diesem Fall klappt und gebe dann nochmal eine Rückmeldung.
Grüße, Constantin

AW: Pivottabelle - Berichtsfilter mit vba ändern
13.01.2013 20:02:43
Constantin
Hallo Franz,
im Moment scheint es noch mit einer anderen Routine zu "kollidieren". Ich werde es noch in neutralem Umfeld testen. Es hilft mir auf jeden Fall weiter.
Grüße und nochmals vielen Dank.
Constantin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivottabelle - Berichtsfilter mit VBA ändern


Schritt-für-Schritt-Anleitung

Um den Berichtsfilter einer Pivottabelle mithilfe von VBA zu ändern, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden Code ein:

    Sub BerichtsfilterAendern()
       Dim pvTab As PivotTable
       Dim varPageWert As Variant
       varPageWert = "2013" ' Setze hier dein gewünschtes Jahr
    
       For Each pvTab In ActiveWorkbook.Worksheets("Tabelle2").PivotTables
           pvTab.PivotFields("Year").ClearAllFilters
           pvTab.PivotFields("Year").CurrentPage = varPageWert
       Next pvTab
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8, wähle dein Makro aus und klicke auf Ausführen.
  5. Aktualisiere die Pivottabelle:

    • Verwende ActiveSheet.RefreshAll, um sicherzustellen, dass alle Änderungen aktualisiert werden.

Häufige Fehler und Lösungen

  • Fehler: Typenkonflikt
    Wenn du mit Zahlen arbeitest, achte darauf, dass die Datentypen zwischen den Quelldaten und dem Pivottabellenfeld übereinstimmen. Nutze CStr() oder CInt(), um sicherzustellen, dass die Typen konvertiert werden.

  • Fehler: Pivottabelle nicht gefunden
    Stelle sicher, dass der Name der Pivottabelle korrekt ist. Du kannst die Namen in der Excel-Oberfläche überprüfen.

  • Lösung: Leere Zeilen oder Spalten
    Wenn deine Pivottabelle leer bleibt, überprüfe, ob die Datenquelle korrekt ist und keine leeren Zeilen oder Spalten enthält.


Alternative Methoden

  • Direkte Anpassung in Excel: Du kannst auch manuell die Filter in der Pivottabelle anpassen, indem du mit der rechten Maustaste auf das Feld klickst und den gewünschten Wert auswählst.

  • Verwendung von Slicern: Slicer bieten eine benutzerfreundliche Möglichkeit, Filter in Pivottabellen zu setzen, ohne dass du VBA verwenden musst.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele für den VBA-Code:

  1. Ändern des Jahresfilters:

    varPageWert = "2020" ' Ändere den Filter auf 2020
  2. Anwenden auf mehrere Pivottabellen:

    For Each pvTab In ActiveWorkbook.Worksheets("Tabelle2").PivotTables
       If pvTab.Name = "PivotTable1" Then
           pvTab.PivotFields("Year").CurrentPage = varPageWert
       End If
    Next pvTab
  3. Filter für mehrere Felder:

    pvTab.PivotFields("Category").CurrentPage = "Sales"

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um das Flackern des Bildschirms während der Ausführung des Makros zu verhindern.
  • Teste deinen Code zunächst mit einer Kopie deiner Datei, um Datenverluste zu vermeiden.
  • Nutze die Debug.Print-Anweisung, um Variablenwerte während der Ausführung zu überwachen.

FAQ: Häufige Fragen

1. Wie setze ich den Berichtsfilter auf mehrere Werte?
Du kannst den Berichtsfilter nicht direkt auf mehrere Werte setzen. Du müsstest die Filter nacheinander anwenden oder einen Slicer verwenden.

2. Was ist der Unterschied zwischen ClearAllFilters und CurrentPage?
ClearAllFilters entfernt alle Filter für das PivotField, während CurrentPage nur einen bestimmten Wert für den Filter setzt.

3. Kann ich auch andere Felder filtern?
Ja, du kannst den gleichen VBA-Ansatz verwenden, um andere Felder in der Pivottabelle zu filtern, indem du einfach den Namen des PivotFields anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige