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

Pivot Bericht über VBA (alle Einträge deaktivieren

Forumthread: Pivot Bericht über VBA (alle Einträge deaktivieren

Pivot Bericht über VBA (alle Einträge deaktivieren
Karsten
Hallo liebe Excel Freunde,
Ich habe ein Macro für eine Pivot Tabelle vom Excel Forum bekommen. Es soll alle Einträge in einer Pivot-Tabelle im Feld "StationNr" deaktivieren. Das funktioniert auch bis zu dem Zeitpunkt wenn er auf das Feld "leer" kommt. Dieses Leer Feld muss ja auch aktiviert bleiben, wenn man das manuell in Excel zusätzlich abwählt bekommt man eine Fehlermeldung! Habt Ihr eine Ahnung wie man das Macro so ändert um alles zu deaktivieren bis auf das Feld "leer" und dann die Schleife beendet wird?
1. Beispiel aus dem Forum:
Sub kein_PivotItem_Anzeigen()
Dim pi As PivotItem
With ActiveSheet.PivotTables("PivotTable1").PivotFields("StationNr")
'alle Einträge bis auf einen deaktivieren
For Each pi In .PivotItems
pi.Visible = False
Next pi
End With
Set pi = Nothing
End Sub

2. Mein Versuch:
'alle Einträge bis auf "Leer"deaktivieren
With ActiveSheet.PivotTables("PivotTable1").PivotFields("StationNr")
For Each pi In .PivotItems
If pi.Caption "leer" Then
pi.Visible = False
End If
Next pi
End With
Danke im Vorraus!
Karsten
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Pivot Bericht über VBA (alle Einträge deaktivieren
17.10.2010 00:57:43
fcs
Hallo Karsten,
hier eine Lösung, die zumindest unter Excel 2007 funktioniert.
Gruß
Franz
'Erstellt unter Excel 2007 (deutsche Version)
Sub Pivot_nur_Leer()
Dim pvTab As PivotTable, pvItem As PivotItem, pvField As PivotField
On Error Resume Next
Set pvTab = ActiveSheet.PivotTables(1)
Set pvField = pvTab.PivotFields("StationNr")
Application.ScreenUpdating = False
With pvField
.PivotItems("(blank)").Visible = True
For Each pvItem In .VisibleItems
If pvItem.Name  "(blank)" Then
pvItem.Visible = False
End If
If .VisibleItems.Count = 1 Then Exit For
Next pvItem
End With
Application.ScreenUpdating = True
End Sub

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivot Bericht über VBA: Alle Einträge deaktivieren


Schritt-für-Schritt-Anleitung

Um alle Einträge in einer Pivot-Tabelle mit Ausnahme des leeren Feldes zu deaktivieren, kannst du das folgende VBA-Makro verwenden. Diese Anleitung basiert auf dem Beispiel aus dem Forum.

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

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub Pivot_nur_Leer()
       Dim pvTab As PivotTable, pvItem As PivotItem, pvField As PivotField
       On Error Resume Next
       Set pvTab = ActiveSheet.PivotTables(1)
       Set pvField = pvTab.PivotFields("StationNr")
       Application.ScreenUpdating = False
       With pvField
           .PivotItems("(blank)").Visible = True
           For Each pvItem In .VisibleItems
               If pvItem.Name <> "(blank)" Then
                   pvItem.Visible = False
               End If
               If .VisibleItems.Count = 1 Then Exit For
           Next pvItem
       End With
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, den Namen des Makros auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Fehlermeldung beim Deaktivieren: Wenn du versuchst, das leere Feld zu deaktivieren, kann es zu einer Fehlermeldung kommen. Stelle sicher, dass du das Feld "(blank)" nicht anrührst, indem du den Code wie oben gezeigt anpasst.

  • Pivot-Tabelle nicht gefunden: Wenn du die Fehlermeldung erhältst, dass die Pivot-Tabelle nicht gefunden werden kann, überprüfe, ob der Name der Pivot-Tabelle korrekt ist und in der aktiven Arbeitsmappe vorhanden ist.


Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du auch manuell die Sichtbarkeit der PivotItems in Excel ändern. Klicke einfach mit der rechten Maustaste auf das entsprechende PivotItem und wähle "Eintrag ausblenden" für alle gewünschten Items, außer für das leere Feld.


Praktische Beispiele

Hier ist ein Beispiel für die Verwendung des VBA-Skripts in einer Excel-Tabelle:

  1. Angenommen, deine Pivot-Tabelle heißt "PivotTable1" und das Feld, das du bearbeiten möchtest, heißt "StationNr".
  2. Die Pivot-Tabelle enthält die Items: "1", "2", "3", "(blank)".
  3. Nach der Ausführung des Makros wird nur das "(blank)"-Feld sichtbar sein, während alle anderen Einträge deaktiviert sind.

Tipps für Profis

  • VBA-Optimierung: Du kannst den Code weiter optimieren, indem du Bedingungen hinzufügst, um nur bestimmte PivotItems auszublenden, anstatt alle außer dem leeren Feld.

  • Fehlerbehandlung: Füge On Error GoTo-Anweisungen hinzu, um spezifische Fehler zu behandeln und eine bessere Benutzererfahrung zu bieten.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Visible und Hidden in VBA?
Visible steuert die Sichtbarkeit von PivotItems, während Hidden ein spezifisches Attribut ist, das in anderen Kontexten verwendet wird. In der Pivot-Tabelle verwendest du Visible.

2. Funktioniert dieses Makro in Excel 2016?
Ja, das Makro ist kompatibel mit Excel 2007 und späteren Versionen, einschließlich Excel 2016. Stelle sicher, dass du die richtige Pivot-Tabelle und das richtige Feld angibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige