Laufzeitfehler 1004 bei Pivottabelle

Bild

Betrifft: Laufzeitfehler 1004 bei Pivottabelle
von: LKro1976
Geschrieben am: 14.08.2015 19:34:58

Ich erhalte beim Ausführung dieses Makros immer einen Laufzeitfehler 1004, weil die PivotItems-Eigenschaft des PivotField-Objektes nicht zugeordnet werden kann.
Hintergrund: Ich möchte in einer Pivottabelle bestimmte Einträge sichtbar, andere unsichtbar machen. Das klappt solange mit angehängtem Skript, wenn die Werte z. B. "Ja - Kündigung" in der Quelltabelle vorhanden sind.
Die Quelltabelle hat jedoch manchmal alle die im Skript genannten Werte, an manchen Tagen _
fehlen einige. Dann kommt der Laufzeitfehler. Ich möchte aber eine VBA-Skript haben, dass immer _
funktioniert, unabhängig davon, ob die Werte vorhanden sind oder nicht. So dass für den Fall, _
das sie vorhanden sind, die richtigen Filter Einstellungen gesetzt werden.


Sub Auto_Open()
' Formatierung im Register "Kündigungen (MB)" ausführen
    Sheets("Kündigungen (MB)").Select
    ActiveSheet.PivotTables("Kündigungen (MB)").PivotCache.Refresh
    With ActiveSheet.PivotTables("Kündigungen (MB)").PivotFields("Zielfeldrelevanz")
    .PivotItems("Ja - Kündigung").Visible = True
    .PivotItems("Ja - KüRü").Visible = True
    .PivotItems("Nein - NRHW").Visible = True
    .PivotItems("Nein - unwirksame Kündigung").Visible = False
    .PivotItems("(blank)").Visible = False
    End With
End Sub

Weiß jemand wie ich das hinbekomme? Welche Änderungen muss ich z. B. im Skript vornehmen, wenn "Ja - Kündigung" nicht immer verfügbar ist.
Vorab vielen Dank für die Unterstützung.

Bild

Betrifft: AW: Laufzeitfehler 1004 bei Pivottabelle
von: Luschi
Geschrieben am: 15.08.2015 13:56:58
Hallo LKro1976,
mein Vorschlag ist Folgender:


Sub Auto_Open()
    Dim wks As Worksheet, pvT As PivotTable, pvI As PivotItem
    ' Formatierung im Register "Kündigungen (MB)" ausführen
    Set wks = Worksheets("Kündigungen (MB)")
    wks.Select
    Set pvT = wks.PivotTables("Kündigungen (MB)")
    With pvT
        .PivotCache.Refresh
        With .PivotFields("Zielfeldrelevanz")
            On Error Resume Next
               'Versuchen, ein Objekt zu erstellen
               Set pvI = .PivotItems("Ja - Kündigung")
            On Error GoTo 0
            If Not (pvI Is Nothing) Then
               'Pivot-Eintrag existiert
               .Visible = True
            Else
               'Pivot-Eintrag existiert nicht
               'also nichts machen
            End If
           .PivotItems("Ja - KüRü").Visible = True
           .PivotItems("Nein - NRHW").Visible = True
           .PivotItems("Nein - unwirksame Kündigung").Visible = False
           .PivotItems("(blank)").Visible = False
        End With
    End With
    
    'Objekte zerstören
    Set pvI = Nothing
    Set pvT = Nothing
    Set wks = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
PS: statt der veralteten Routine 'Auto_Open' solltest Du auf 'Private Sub Workbook_Open()' umsteigen, welche sich in 'DieseArbeitsmappe' befinden muß.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004 bei Pivottabelle"