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

Abfrage ob es PivotItems("(blank)" gibt

Forumthread: Abfrage ob es PivotItems("(blank)" gibt

Abfrage ob es PivotItems("(blank)" gibt
geolino
Hallo und ein schönes Jahr 2011,
in einem VBA-Projekt wird eine Pivottabelle erstellt. Dabei sollen die Items, die leer sind ausgefiltert werden. Ich habe dazu diese Zeilen geschrieben:
With ActiveSheet.PivotTables("PT01").PivotFields("Feld02")
If .PivotItems("(blank)").Visible = True Then
.PivotItems("(blank)").Visible = False
End If
End With

Bei der If-Frage kommt immer der Fehler: Typen unverträglich (Laufzeitfehler 13). Wenn ich ohne if-Frage
.PivotItems("(blank)").Visible = False
schreibe, dann wird dies ohne Fehlermeldung ausgeführt. Die Abfrage ist aber deshalb notwendig, weil es Fälle gibt, in denen keine leeren Items vorhanden sind. In diesen Fällen gibt es ebenfalls eine Fehlermeldung.
Weiß jemand dazu einen Rat?
Danke im voraus
geolino
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
So habe ich es gelöst
05.01.2011 11:12:46
Holger
Hallo Geolino,
ich stehe gerade vor dem gleichen Problem.
Gelöst habe ich es so:
Sub So
For Each ptItem In Target.PivotFields("Period").PivotItems
If ptItem.Name  "(blank)" Then
If ptItem.Visible = True And ptItem.Name  "" Then
strPiName = ptItem.Name
MsgBox strPiName
End If
End If
Next ptItem
End Sub
Jetzt könntest du noch einen Else Zweig einbauen und hier nach dem Visible abfragen.
Denn im Else Zweig bist du sicher beim Item Leer.
Anzeige
AW: So habe ich es gelöst
05.01.2011 11:50:53
geolino
Prima, ja das hat funktioniert!!! Ich danke dir ganz herzlich.
Schönen Feiertag morgen, falls ihr (wie ich) eine habt.
Gruß
Geolino
;
Anzeige
Anzeige

Infobox / Tutorial

Abfrage von leeren PivotItems in VBA


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zu dem Arbeitsblatt, das die Pivottabelle enthält.

  2. Aktiviere den VBA-Editor, indem du ALT + F11 drückst.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub FilterBlankPivotItems()
       Dim ptItem As PivotItem
       With ActiveSheet.PivotTables("PT01").PivotFields("Feld02")
           For Each ptItem In .PivotItems
               If ptItem.Name = "(blank)" Then
                   ptItem.Visible = False
               End If
           Next ptItem
       End With
    End Sub
  5. Schließe den VBA-Editor und führe das Makro aus, um leere PivotItems zu filtern.


Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Typen unverträglich
    Dieser Fehler tritt auf, wenn die Abfrage nach (blank) nicht korrekt formuliert ist. Stelle sicher, dass du die richtige Syntax verwendest. Der Code sollte sicherstellen, dass auf jedes PivotItem zugegriffen werden kann.

  • Keine sichtbaren Items nach dem Ausführen des Makros
    Wenn alle Items ausgeblendet sind, überprüfe, ob deine Pivottabelle tatsächlich leere Einträge hat. Füge eine Abfrage hinzu, um zu prüfen, ob (blank) tatsächlich im PivotItems vorhanden ist.


Alternative Methoden

Eine alternative Methode zur Handhabung von leeren PivotItems ist die Verwendung von Filterfunktionen in Excel selbst. Du kannst manuell die Filteroption verwenden, um leere Werte auszublenden:

  1. Klicke in die Pivottabelle.
  2. Gehe zu den PivotTable-Tools und dann zu "Analysieren".
  3. Wähle "Feldliste" und klicke auf das Dropdown-Menü des spezifischen Feldes.
  4. Deaktiviere die Option für (blank).

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du leere PivotItems mit VBA filtern kannst. Der folgende Code demonstriert, wie du sicherstellst, dass nur nicht-leere Items angezeigt werden:

Sub ShowNonBlankItems()
    Dim ptItem As PivotItem
    With ActiveSheet.PivotTables("PT01").PivotFields("Feld02")
        For Each ptItem In .PivotItems
            If ptItem.Name <> "(blank)" And ptItem.Visible = True Then
                MsgBox "Sichtbares Item: " & ptItem.Name
            End If
        Next ptItem
    End With
End Sub

Dieses Skript zeigt dir jedes sichtbare Item an, das nicht leer ist.


Tipps für Profis

  • Nutze Debug.Print in deinem VBA-Code, um den Status der PivotItems zu überwachen und sicherzustellen, dass die Logik funktioniert.
  • Berücksichtige die Verwendung von On Error Resume Next, um mögliche Laufzeitfehler elegant abzufangen und das Skript weiterlaufen zu lassen.
  • Wenn du regelmäßig mit pivotitems vba arbeitest, erstelle eine eigene Bibliothek mit nützlichen Funktionen, die du wiederverwenden kannst.

FAQ: Häufige Fragen

1. Warum bekomme ich einen Laufzeitfehler, wenn ich (blank) abfrage?
Dieser Fehler kann auftreten, wenn das PivotItem nicht existiert oder nicht sichtbar ist. Stelle sicher, dass du die Syntax korrekt verwendest und auf gültige PivotItems zugreifst.

2. Wie kann ich leere PivotItems in einer anderen Excel-Version abfragen?
Die oben genannten VBA-Methoden funktionieren in den meisten aktuellen Excel-Versionen. Achte darauf, dass du die Namen der PivotTables und Felder korrekt angibst, da sie je nach Version variieren können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige