Clever-Excel-Forum

Normale Version: VBA - Pivot Tabellen_Filter für alle gleichzeitig ändern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Liebe Excel Mitstreiter,
 
nach stundenlangem Probieren und Dr. Google verfluchen würde ich Euch gerne folgende Frage stellen:
 
In einem Excel Worksheet habe ich einige Pivot Tabellen. Diese haben alle das Feld „Completion Date“ eingebunden. Nun möchte ich per VBA für alle Pivot Tabellen gleichzeitig den Datumsfilter für dieses Feld („Completion Date“) auf „This Year“ ändern.
Dies habe ich folgendermaßen versucht und ich verstehe leider absolut nicht, warum dies nicht klappt: Huh
Code:
Option Explicit
Sub Test()
       Dim ws As Worksheet
       Dim pt As PivotTable
     
       For Each ws In Worksheets
           For Each pt In ws.PivotTables
               pt.PivotFields("Completion Date").ClearAllFilters
               pt.PivotFields("Completion Date").PivotFilters.Add Type:=xlDateThisYear
           Next
       Next
End Sub

Der Fehler wird immer für die erste Zeile pt.PivotFields… angezeigt.
Ich wäre mega dankbar wenn jemand mir hier auf die Sprünge helfen würde und bedanke mich schon mal im Voraus für die investierte Zeit!!
 
Beste Grüße
Tim
Hi,
du durchläufst alle Pivots auf allen Arbeitsblättern.
wenn nun das Feld nicht existiert bei der ersten getroffenen Pivot fliegt es natürlich ab.

Oder hast du wirklich in allen Pivots dieses Feld.
Hallo Jeanie,

vielen lieben Dank für die Information - das war die Lösung!
Solche Fehler passieren wenn man kaum Ahnung von VBA hat und sich den Code zusammenkopiert... Leider war mir nämlich nicht bewußt, dass der Code auf alle Arbeitsblätter angewandt wird.
Ich würde ihn gerne nur auf eines anwenden. Weißt Du ob dies möglich ist?

Besten Dank
Tim
Irgendwie soSmile


Sub Test()
       Dim ws As Worksheet
       Dim pt As PivotTable
      set ws = worksheets("MeinTollesPivotBlattoderwieimmeresauchheißt")
        with ws
            For Each pt In ws.PivotTables
               pt.PivotFields("Completion Date").ClearAllFilters
               pt.PivotFields("Completion Date").PivotFilters.Add Type:=xlDateThisYear
           Next
        end with
End Sub
Code:
Sub M_snb()
  For Each it In sheet1.PivotTables
    with it.PivotFields("Completion Date")
      .ClearAllFilters
      .PivotFilters.Add 50
    end with
  Next
End Sub
Hallo Jeanie, hallo snb,

vielen Dank für Euren Input! Ich bin leider noch nicht dazu gekommen es zu testen, aber ich werde Euch die Tage auf jeden Fall Rückmeldung geben!
Euch erst einmal ein schönes WE.

Beste Grüße
Tim
Ich habe nun beide Varianten gestestet und beide funktionieren einwandfrei, vielen Dank an euch beiden!
Da der Code von snb weiterentwickelt und performanter ist, kommt dieser nun zum Einsatz.

Tausend Dank an Euch! :18:

Beste Grüße
Tobi