Microsoft Excel

Herbers Excel/VBA-Archiv

Pivot filtern mit VBA Fehler 1004


Betrifft: Pivot filtern mit VBA Fehler 1004
von: Oliver
Geschrieben am: 18.10.2018 08:53:35

Guten Morgen zusammen,

ich bin neu hier und habe ein Problem bei dem Ihr mir hoffentlich helfen könnt.

Grob zum Hintergrund: Ich habe eine Tabelle als Datenbank mit vielen verschiedenen Buchungsinformationen. Über eine Übersichtsseite möchte ich mit einem ersten Dropdown zunächst den Kunden und dann mittels zweiten Dropdown das Buchungsdatum auswählen.
Die einzige Möglichkeit (die ich gefunden habe) wie ich den Inhalt des zweite Dropdown abhängig vom ersten realisieren kann, war der Umweg über eine Pivot Tabelle.

Hier hänge ich aber an folgendem Problem:

In einer Pivot soll als Filter der Kundenname gesetzt werden und darüber eine Liste der Bestelldaten zu erhalten. Diese übergebe ich dann in das zweite Dropdown. Beide Dropdowns sind ActiveX Comboboxen.
Beim auswählen eines Eintrags in der ersten Combobox soll dieser Eintrag als Filter der Pivot _
gesetzt werden. Über die Makro Aufzeichnung habe ich einen Code erhalten und ihn wie folgt _
umgesetzt:



Private Sub ComboBox1_Change()
        
        a = ComboBox1.Value
        
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest name"). _
ClearAllFilters
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest Name"). _
CurrentPage = a
    
End Sub

Nun erhalte ich jedoch immer den Fehler 1004 - Die PivotFields-Eigenschaft des Pivot....

Probeweise habe ich den selben Code in das Clickevent eines Buttons programmiert und dort klappt der Code einwandfrei. Es scheint also mit dem Change() zusammen zu hängen.

Kann mir jemand weiterhelfen. Ich möchte nicht bei jeder Auswahl im Dropdown einen Knopf drücken müssen um die nächste Auswahl zu tätigen.
Falls jemand eine Alternative zu meinem Workaround mit der Pivot Tabelle hat wäre das genauso hilfreich.

Besten Dank für die Hilfe!

  

Betrifft: AW: Pivot filtern mit VBA Fehler 1004
von: fcs
Geschrieben am: 19.10.2018 08:05:39

Hallo Oliver,

probiere es mal so

Private Sub ComboBox1_Change()
     If ComboBox1.ListIndex > -1 Then
        a = ComboBox1.Value
        
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest name"). _
            ClearAllFilters
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest Name"). _
            CurrentPage = a
    End If
    
End Sub

LG
Franz


  

Betrifft: AW: Pivot filtern mit VBA Fehler 1004
von: Oliver
Geschrieben am: 19.10.2018 11:31:11

Es erscheint leider die selbe Fehlermeldung.


  

Betrifft: AW: Pivot filtern mit VBA Fehler 1004
von: fcs
Geschrieben am: 19.10.2018 12:34:14

Hallo Oliver,

möglicherweise funktionier eine Aktualisertung einer Pivot nicht, solange die Combobox den Fokus hat.
Ich hatte bei mir mit einer MsgBox getrestet - da ging es.

Wäre als Alternative noch das Lostfocus-Ereignis. Hier musst du nach der Auswahl in der Combobox dann auf eine beliebige Zelle im Blatt klicken.

Private Sub ComboBox1_LostFocus()
     If ComboBox1.ListIndex > -1 Then
        a = ComboBox1.Value
        
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest name"). _
            ClearAllFilters
        Worksheets("Datamatrix_Booking").PivotTables("dat").PivotFields("Guest Name"). _
            CurrentPage = a
    End If
    
End Sub
LG
Franz