Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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

Pivotauswahlfilter verknüpfen

Pivotauswahlfilter verknüpfen
28.02.2014 11:30:42
Dirk
Hallo Forum
ich habe mehrere im Berichtsfilter völlig identische Pivottabellen. Nun möchte ich eine Tabelle als Basistabelle definieren. Wenn ich dort den Berichtsfilter ändere, dann sollen sich auch die Berichtsfilter der anderen Pivottabellen diesem anpassen. Geht das mit einem "bescheidenden" VBA-Code? Oder irgendwie anders?
Vielen Dank!
Gruß aus Hannover
Dirk

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivotauswahlfilter verknüpfen
28.02.2014 13:23:57
fcs
Hallo Dirk,
unter VBA sind mit Pivottabellen nur wenige Dinge wirklich einfach.
Nachfolgend ein Makro mit Einschränkungen - Mehrfachauswahl im Berichtsfeld nicht möglich - und grob getestet.
Mit Mehrfachauswahl wird es gleich sehr viel komplizierter
Gruß
Franz
'Erstellt unter Excel 2010!!!
Option Explicit
'Code unter dem Tabellenmodul mit der Masterpivot-Tabelle
'Funktioniert nur wenn in den Berichtsfilterfeldern keine Mehrfachauswahl gemacht wird.
Sub PivotPageFieldsSynchronisieren()
Dim wksPivotMaster As Worksheet, pvTabMaster As PivotTable, pvFieldMaster As PivotField
Dim wksPivot As Worksheet, pvTab As PivotTable, pvField As PivotField
Dim strName As String
Dim wks As Worksheet
Set wksPivotMaster = Worksheets("Tabelle2") 'Tabellenblatt mit MasterPivot - anpassen!!
Set pvTabMaster = wksPivotMaster.PivotTables(1)
For Each wks In ActiveWorkbook.Worksheets
For Each pvTab In wks.PivotTables
If wks.Name = wksPivotMaster.Name And pvTab.Name = pvTabMaster.Name Then
Else
For Each pvFieldMaster In pvTabMaster.PageFields
Set pvField = pvTab.PageFields(pvFieldMaster.Name)
strName = pvFieldMaster.CurrentPage
pvField.CurrentPage = strName
Next
End If
Next
Next
End Sub
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call PivotPageFieldsSynchronisieren
End Sub

Anzeige
AW: Pivotauswahlfilter verknüpfen
28.02.2014 15:15:30
Dirk
Hallo Franz,
ich habe in den letzten zwei Stunden schon rumgefummelt und es gerade hinbekommen (natürlich auch ohne Mehrfachauswahl!). Kannst du mir vielleicht noch einen Tipp zum Auslösen meines Makros geben? Ich möchte, dass mein Makro ausgeführt wird, wenn im Berichtsfilterbereich der Masterpivot (B1:B4) eine Änderung vorgenommen wird.
Dann hätte ich es auch. Vielen Dank!
Gruß
Dirk

AW: Pivotauswahlfilter verknüpfen
28.02.2014 18:41:35
fcs
Hallo Dirk,
dazu war das 2. Makro gedacht.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call PivotPageFieldsSynchronisieren
End Sub
Dieses fügst du im VBA-Editor unter dem Tabellenblatt mit der Masterpivot ein.
Wenn die Ereignismakros aktiv sind -das ist normalerweise der Fall, dann startet das Makro automatisch sobald die Masterpivot sich aktualisiert.
Gruß
Franz

Anzeige
AW: Pivotauswahlfilter verknüpfen
02.03.2014 22:11:41
Dirk
Hallo Franz,
danke dir! Aber so richtig komme ich nicht weiter. Das blöde ist, dass ich mehrere Tabellen auf einem Excelblatt habe und das sollte auch so bleiben. Durch "Worksheet_PivotTableUpdate(ByVal Target As PivotTable)" verursache ich wohl eine Art Zirkelbezug bzw. Endlosschleife. Ich muss das ganze somit irgendwie auf die Masterpivot beziehen. Also nur wenn ich dort Änderungen vornehme darf das Makro ausgeführt werden, das dann ja wieder andere Pivottabellen verändert. Diese Änderungen auf dem selben Blatt sollen das Makro aber nicht wieder starten. Hast du dazu noch eine Idee. Würde mich gern etwas "professioneller" ausdrücken, aber leider bin ich in VBA nicht sehr fitt.....
Viele Grüße
Dirk

Anzeige
AW: Pivotauswahlfilter verknüpfen
03.03.2014 08:33:46
fcs
Hallo Dirk,
inklusive Prüfung des Namens der Pivottabelle kann man die Ausführung auf eine Pivottabelle beschränken.
Gruß
Franz
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = Me.PivotTables(1).Name Then '1 = Indexnumer der Masterpivot - ggf. anpassen
'  If Target.Name = "PivotTablesXYZ" Then 'Name der Masterpivot ggf. anpassen
Call PivotPageFieldsSynchronisieren
End If
End Sub

AW: Pivotauswahlfilter verknüpfen
04.03.2014 08:16:52
Dirk
Hallo Franz,
hoffentlich ein letztes Mal - entschuldige. Leider komme ich auch nur sporadisch zum Weiterarbeiten... Folgendes habe ich jetzt gemacht:
Private Sub Worsheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = PivotTables(1).Name Then 'Me.PivotTable(1) geht auch nicht. Was immer "Me"  _
bedeutet :-)
Call Pivot_Berichtsfilter_angleichen
End If
End Sub

Sub Pivot_Berichtsfilter_angleichen()
Dim RV As String
Dim LVBereich As String
Dim RVBereich As String
Dim OV As String
RV = ActiveSheet.PivotTables("PivotTable1").PivotFields("Bezeichnung--RV").CurrentPage
LVBereich = ActiveSheet.PivotTables("PivotTable1").PivotFields("LV-Geschäftsbereiche").CurrentPage
RVBereich = ActiveSheet.PivotTables("PivotTable1").PivotFields("RV-Geschäftsbereiche").CurrentPage
OV = ActiveSheet.PivotTables("PivotTable1").PivotFields("Ortsverband").CurrentPage
ActiveSheet.PivotTables("PivotTable2").PivotFields("Bezeichnung--RV").CurrentPage = RV
ActiveSheet.PivotTables("PivotTable2").PivotFields("LV-Geschäftsbereiche").CurrentPage = LVBereich
ActiveSheet.PivotTables("PivotTable2").PivotFields("RV-Geschäftsbereiche").CurrentPage = RVBereich
ActiveSheet.PivotTables("PivotTable2").PivotFields("Ortsverband").CurrentPage = OV
End Sub Der Teil "Pivot_Berichtsfilter_angleichen" funktioniert problemlos beim anuellen Auslösen. Aber der erste Teil funktioniert nicht. Das Makro löst bei einer Änderung nicht aus. Da habe ich sicherlich eine Kleinigkeit falsch gemacht.....
Gruß
Dirk

Anzeige
AW: Pivotauswahlfilter verknüpfen
04.03.2014 10:24:11
fcs
Hallo Dirk,
Da habe ich sicherlich eine Kleinigkeit falsch gemacht.....

Ich tippe auf 2 Kleinigkeiten:
1. Du hast einen Tippfehler drin:
Worsheet_PivotTableUpdate statt Worksheet_PivotTableUpdate
2. Wenn es mit "Me" nicht funktioniert, dann hast du das Makro nicht an der korrekten Position im VBA-Projekt eingefügt.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
ist ein sogenanntes Ereignismakro. Diese werden automatisch gestartet, wenn in dem Objekt (hier Worksheet) das entsprechende Ereignis (hier PivotTableUpdate) stattgefunden hat.
Damit das Ganze funktioniert müssen diese Ereignismakros unter dem entsprechend Objektmodul (hier dann die entsprechende Tabelle) eingefügt werden.
Die Variable "Me" ist hierbei ein Platzhalter für das Objekt (DieseArbeitsmappe, Tabelle oder Userform) in dessen Codemodul der Code eingefügt ist. Ihre Verwendung ist zwar meistens nicht erforderlich. Ihre Verwendung erleichtert aber sehr oft die Erstellung von Programmcode.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige