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

Forumthread: VBA - Pivot Filter zurücksetzen - mit Ausnahme

VBA - Pivot Filter zurücksetzen - mit Ausnahme
17.12.2018 12:33:14
Robert
Hallo zusammen,
ich finde leider nirgends eine Lösung für mein kleines VBA-Problem.
Ich möchte für nur ein einziges Arbeitsheet alle Pivot-Filter zurücksetzen. Dies funktioniert soweit auch reibungslos mit unten stehendem Code.
Problem: Allerdings möchte ich, das bestimmte Pivot-Filter nicht zurückgesetzt werden (quasi als Ausnahme). Z.B. soll der "Datenschnitt_Buchungsperiode" weiterhin auf das aktuell ausgewählte Datum gefiltert bleiben!
Kann jemand bitte den nachfolgenden Code für mich so anpassen, dass bspw. für den Datenschnitt "Datenschnitt_Buchungsperiode" der Filter nicht aufgehoben wird?
Private Sub Workbook_Open()
Sheets("FILTER").Select
Dim slcr As SlicerCache
Dim slc As Slicer
For Each slcr In ActiveWorkbook.SlicerCaches
For Each slc In slcr.Slicers
If slc.Shape.Parent Is ActiveSheet Then
If slcr.FilterCleared = False Then
slcr.ClearManualFilter
Exit For
End If
End If
Next slc
Next slcr
End Sub
Vielen Dank im Voraus!
Gruß, Robert
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Pivot Filter zurücksetzen - mit Ausnahme
17.12.2018 22:03:37
fcs
Hallo Robert,
man kann "einfach" die Namen der Slicer prüfen.
Gruß
Franz
Private Sub Workbook_Open()
Sheets("FILTER").Select
Dim slcr As SlicerCache
Dim slc As Slicer
For Each slcr In ActiveWorkbook.SlicerCaches
Select Case slcr.Name
Case "Datenschnitt_Buchungsperiode", "Datenschnitt_XYZ"
'Dies Datenschnitte nicht zurücksetzen
Case Else
For Each slc In slcr.Slicers
If slc.Shape.Parent Is ActiveSheet Then
If slcr.FilterCleared = False Then
slcr.ClearManualFilter
Exit For
End If
End If
Next slc
End Select
Next slcr
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Pivot Filter zurücksetzen mit Ausnahme


Schritt-für-Schritt-Anleitung

Um einen bestimmten Pivot-Filter in Excel mit VBA zurückzusetzen, während andere Filter erhalten bleiben, kannst du den folgenden Code verwenden. Dieser Code überprüft die Namen der Slicer und lässt bestimmte Filter unberührt.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere den folgenden Code in das Modul:

    Private Sub Workbook_Open()
       Sheets("FILTER").Select
       Dim slcr As SlicerCache
       Dim slc As Slicer
       For Each slcr In ActiveWorkbook.SlicerCaches
           Select Case slcr.Name
               Case "Datenschnitt_Buchungsperiode", "Datenschnitt_XYZ"
                   ' Diese Datenschnitte nicht zurücksetzen
               Case Else
                   For Each slc In slcr.Slicers
                       If slc.Shape.Parent Is ActiveSheet Then
                           If slcr.FilterCleared = False Then
                               slcr.ClearManualFilter
                               Exit For
                           End If
                       End If
                   Next slc
           End Select
       Next slcr
    End Sub
  4. Schließe den VBA-Editor und speichere deine Datei als Makro-fähige Arbeitsmappe (*.xlsm).

  5. Schließe und öffne die Arbeitsmappe erneut, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Lösung: Stelle sicher, dass die Slicer korrekt benannt sind. Überprüfe die Namen der Slicer in deinem Excel-Dokument.
  • Fehler: Pivot-Filter wird nicht zurückgesetzt

    • Lösung: Überprüfe, ob der Slicer tatsächlich auf dem aktiven Arbeitsblatt vorhanden ist. Der Code setzt Filter nur zurück, wenn die Slicer auf dem aktiven Blatt sind.

Alternative Methoden

Eine alternative Methode, um alle Filter in einer Pivot-Tabelle zurückzusetzen, ist die Verwendung des PivotTable.ClearAllFilters-Befehls. Diese Methode setzt jedoch alle Filter zurück, daher ist Vorsicht geboten. Der Code könnte wie folgt aussehen:

Sub AlleFilterZuruecksetzen()
    Dim pvt As PivotTable
    Set pvt = Sheets("DeinBlatt").PivotTables("DeinPivotTabelleName")
    pvt.ClearAllFilters
End Sub

Diese Methode ist nützlich, wenn du alle Filter zurücksetzen möchtest und keine Ausnahmen benötigst.


Praktische Beispiele

Ein Beispiel, wo dieser Code nützlich sein könnte, ist in einem Verkaufsbericht, wo du einen Datenschnitt für das Verkaufsdatum hast. Du möchtest beim Öffnen der Datei sicherstellen, dass alle anderen Filter zurückgesetzt werden, aber der ausgewählte Zeitraum für die Buchungsperiode bleibt bestehen.


Tipps für Profis

  • Wenn du häufig mit Pivot-Tabellen arbeitest, kannst du in Excel einen Button erstellen, um das Makro auszuführen. Dies kannst du über die Entwicklertools im Menüband tun.
  • Überlege, ob du die Excel-Datenschnitt Mehrfachauswahl deaktivieren möchtest, um die Benutzerfreundlichkeit zu verbessern. Dies kann helfen, versehentliche Filteränderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Filter zurücksetzen, ohne VBA zu verwenden?
Du kannst die Filter in Excel manuell zurücksetzen, indem du auf den Pfeil im Filter klickst und die Option „Alle auswählen“ auswählst.

2. Kann ich den Code für andere Slicer anpassen?
Ja, du kannst die Namen der Slicer im Select Case-Block anpassen, um verschiedene Slicer von der Rücksetzung auszunehmen.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der VBA-Code sollte in den meisten aktuellen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016 und 2019.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige