Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Pivot Filter Mehrauswahl

VBA Pivot Filter Mehrauswahl
16.05.2023 17:54:20
Dom

Hallo in die Runde,

bin über Google auf diese Website gestoßen und hoffe, dass Ihr mir weiterhelfen könnt. Habe zwei Mal das gleiche Problem vom Prinzip her, die Lösungen werden aber vermutlich unterschiedlich aussehen nehme ich mal an.

1.) Ich habe folgenden Code:


Dim WS3 As Worksheet
Set WS3 = WB3.Sheets("Sheet1")
Dim PVT3 As PivotTable
Set PVT3 = WS3.PivotTables("Dataset")
Dim PVTF3 As PivotField
Set PVTF3 = PVT3.PivotFields("[Date].[Fiscal Period (Num)].[Fiscal Period (Num)]")
PVTF3.VisibleItemsList = Array( _
        "[Date].[Fiscal Period (Num)].&[1]", "[Date].[Fiscal Period (Num)].&[2]", _
        "[Date].[Fiscal Period (Num)].&[3]", "[Date].[Fiscal Period (Num)].&[4]", _
        "[Date].[Fiscal Period (Num)].&[5]", "[Date].[Fiscal Period (Num)].&[6]", _
        "[Date].[Fiscal Period (Num)].&[7]", "[Date].[Fiscal Period (Num)].&[8]", _
        "[Date].[Fiscal Period (Num)].&[9]", "[Date].[Fiscal Period (Num)].&[10]", _
        "[Date].[Fiscal Period (Num)].&[11]", "[Date].[Fiscal Period (Num)].&[12]")
WB3.Save
WB3.Close


Im Filter der Pivot Tabelle sollen die Monate 1 bis 12 ausgewählt werden. Es funktioniert auch alles, jedoch sah mein Wunsch so aus, dass ich nur ein Mal am Anfang den Endmonat ändern muss und nichts weiter. Also mein Wunsch wäre es am Anfang des Codes eine Variable, z.B. Endmonat = 5, festzulegen und dann werden die Monate 1-5 im Filter der Pivot ausgewählt. Sicherlich muss ich hier ja mit einer Schleife arbeiten, meine Versuche führten aber nur zu unzähligen Fehlermeldungen.

2.)
Gleiches Spiel wie eben, nur sind die Monate hier wie folgt benannt: "202207", "202208", ..., "202212", "202301",...., "202306", sprich Jahr und dann Monat in umgekehrter Reihenfolge. Da Juli Monat 1 und Juni Monat 12 entspricht wäre meine Frage hier, wie ich eine Mehrauswahl treffen kann. Wenn ich also sage Endmonat ist 202305, dann sollen mir alle Monate von Juli 2022 bis einschließlich Mai 2023 ausgewählt werden.


Hoffe wirklich Ihr könnt mir helfen, mir gehen so langsam die Ideen aus.

Vielen lieben Dank bereits allen im Voraus.

Viele Grüße

Dom

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Pivot Filter Mehrauswahl
16.05.2023 18:45:03
Pappawinni
Hab keine Ahnung von Pivot :/,
aber wenn es nur darum geht das Array zu variieren, sollte sowas gehen:


Dim allPeriods, selPeriods()
Dim Endmonat As Long, i As Long

Endmonat = 5

allPeriods = Array( _
        "[Date].[Fiscal Period (Num)].&[1]", "[Date].[Fiscal Period (Num)].&[2]", _
        "[Date].[Fiscal Period (Num)].&[3]", "[Date].[Fiscal Period (Num)].&[4]", _
        "[Date].[Fiscal Period (Num)].&[5]", "[Date].[Fiscal Period (Num)].&[6]", _
        "[Date].[Fiscal Period (Num)].&[7]", "[Date].[Fiscal Period (Num)].&[8]", _
        "[Date].[Fiscal Period (Num)].&[9]", "[Date].[Fiscal Period (Num)].&[10]", _
        "[Date].[Fiscal Period (Num)].&[11]", "[Date].[Fiscal Period (Num)].&[12]")

ReDim selPeriods(Endmonat - 1)
For i = 0 To Endmonat - 1
   selPeriods(i) = allPeriods(i)
Next

Dim WS3 As Worksheet
Set WS3 = WB3.Sheets("Sheet1")
Dim PVT3 As PivotTable
Set PVT3 = WS3.PivotTables("Dataset")
Dim PVTF3 As PivotField
Set PVTF3 = PVT3.PivotFields("[Date].[Fiscal Period (Num)].[Fiscal Period (Num)]")
PVTF3.VisibleItemsList = selPeriods

WB3.Save
WB3.Close



Anzeige
AW: VBA Pivot Filter Mehrauswahl
16.05.2023 19:32:17
Dom
Hat einwandfrei geklappt, wirklich vielen vielen lieben Dank! Bin unheimlich daran verzweifelt...... Weißt Du zufällig auch, wie ich das zweite hinkriege? Hier liegt ja keine reguläre zählweise von 1 bis 12 vor......Das Array Juli bis März sieht beispielsweise aktuell so aus:


Dim WS52 As Worksheet
Set WS52 = WB5.Sheets("Sonderfälle")
Dim PVT52 As PivotTable
Set PVT52 = WS52.PivotTables("Controlling_Dataset")
Dim PVTF52 As PivotField
Set PVTF52 = PVT52.PivotFields("[Date].[CYMonth].[CYMonth]")
PVTF52.VisibleItemsList = Array( _
        "[Date].[CYMonth].&[202207]", "[Date].[CYMonth].&[202208]", _
        "[Date].[CYMonth].&[202209]", "[Date].[CYMonth].&[202210]", _
        "[Date].[CYMonth].&[202211]", "[Date].[CYMonth].&[202212]", _
        "[Date].[CYMonth].&[202301]", "[Date].[CYMonth].&[202302]", _
        "[Date].[CYMonth].&[202303]")
Sheets("Utilization").Select
WB5.Save
WB5.Close



Anzeige
AW: VBA Pivot Filter Mehrauswahl
16.05.2023 22:01:59
Pappawinni
sowas vielleicht:



Dim selPeriods()
Dim dtStart As Date
Dim dtEnd As Date
Dim lngMonth As Long, i As Long

dtStart = DateSerial(2022, 7, 1)    'Anfang: Jahr, Monat, Tag
dtEnd = DateSerial(2023, 3, 1)      'Ende: Jahr, Monat, Tag

lngMonth = DateDiff("M", dtStart, dtEnd)
ReDim selPeriods(lngMonth)

For i = 0 To lngMonth
    selPeriods(i) = "[Date].[CYMonth].&[" & Format(DateAdd("M", i, dtStart), "YYYYMM") & "]"
Next

Dim WS52 As Worksheet
Set WS52 = WB5.Sheets("Sonderfälle")
Dim PVT52 As PivotTable
Set PVT52 = WS52.PivotTables("Controlling_Dataset")
Dim PVTF52 As PivotField
Set PVTF52 = PVT52.PivotFields("[Date].[CYMonth].[CYMonth]")
PVTF52.VisibleItemsList = selPeriods
Sheets("Utilization").Select
WB5.Save
WB5.Close



Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige