Microsoft Excel

Herbers Excel/VBA-Archiv

Makro läuft nicht trotz Makrorekorder

Betrifft: Makro läuft nicht trotz Makrorekorder von: Andrea
Geschrieben am: 15.10.2020 17:48:27

Hallo zusammen,


ich möchte per VBA eine Pivottabelle filtern, und zwar sollen zunächst alle Filter gelöscht werden und dann nacheinander aber aufeinander aufbauend einige Werte abgewählt werden. Dazu habe ich für das Makro den Beschriftungsfilter gewählt, da der Makrorecorder das "Dem Filter die aktuelle Auswahl hinzufügen" wegen der Masse der Einträge nicht aufzeichnen kann. Zum einen sollen alle Werte, die "default" enthalten abgewählt werden, danach alle, die mit "NN " beginnen:


Sheets("RA-Einn.").PivotTables("PivotTable2").PivotFields( _

"[Mitarbeiter].[Mitarbeiter].[Mitarbeiter]").ClearAllFilters


Sheets("RA-Einn.").PivotTables("PivotTable2").PivotFields( _

"[Mitarbeiter].[Mitarbeiter].[Mitarbeiter]").PivotFilters.Add Type:= _

xlCaptionDoesNotContain, Value1:="default"



Sheets("RA-Einn.").PivotTables("PivotTable2").PivotFields( _

"[Mitarbeiter].[Mitarbeiter].[Mitarbeiter]").PivotFilters.Add Type:= _

xlCaptionDoesNotBeginWith, Value1:="NN "


Leider bricht das Makro beim dritten Schritt ab, da schon ein Beschriftungsfilter ausgewählt ist.


Hat einer einen Tipp, wie ich trotzdem zum gewünschten Ziel komme?


Vielen Dank für eure Hilfe.


VG Andrea

Betrifft: AW: Makro läuft nicht trotz Makrorekorder
von: Yal
Geschrieben am: 15.10.2020 20:08:42

Hallo Andrea,

ja so ist es: pro PivotField nur einen Filter.
Zwei Alternative:

1. Eine Hilfespalte mit einem WENN, dass deine Bedingungen in Wahr/Falsch umsetzt, dann kannst Du die Spalte als Feld im Kopfbereich und Wahr (oder Falsch) filtern

2. Eine Filtersetzen pro Element, also testen und setzen:
Public Sub MeineFilter_setzen()
    MultiBedingung _
        PF:=Sheets("RA-Einn.").PivotTables("PivotTable2").PivotFields("[Mitarbeiter].[ _
Mitarbeiter].[Mitarbeiter]"), _
        CapNotCont:="Default", _
        CapBegWith:="NN"
End Sub

Private Sub MultiBedingung(PF As PivotField, Optional CapNotCont As String, Optional CapBegWith  _
As String)
Dim NichtZeigen As Boolean

    PF.ClearAllFilters
    For Each E In PF.PivotItems
        Ausschluss = False 'Reset wegen For-Schleife
        If Not IsMissing(CapNotCont) Then
            If InStr(1, E.Caption, CapNotCont, vbTextCompare) > 0 Then NichtZeigen = True
        End If
        If Not IsMissing(CapBegWith) Then
            If Left(E.Caption, 2) = CapBegWith Then NichtZeigen = True
        End If
        E.Visible = Not NichtZeigen
    Next
End Sub
Viel Erfolg
Yal

Betrifft: AW: Makro läuft nicht trotz Makrorekorder
von: Andrea
Geschrieben am: 16.10.2020 11:20:26

Hallo Yal,

vielen Dank, hat super geklappt!

VG Andrea