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

Makro zum Synchronisieren setzt Charts zurück

Makro zum Synchronisieren setzt Charts zurück
22.08.2013 08:07:14
Hendrik
Hallo,
ich habe ein Makro, dass die Berichtsfilter verschiedener Pivottabellen synchronisiert. Das funktioniert soweit auch sehr gut, allerdings wird ein Pivot Chart zurückgesetzt. Soll heißen, wenn ich vorher eine Sekundärachse und sowohl ein Balken als auch ein Liniendiagramm in diesem Chart hatte, so wird alles zurückgesetzt und ich erhalte ein Chart ohne Sekundärachse und alles als Balkendiagramm dargestellt.
Erkennt jemand, woran das liegen kann und ob man dies leicht ändern kann?
Vielen Dank für die Hilfe.
Hier der Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Exit Sub
If ((Target.Row = 3) And (Target.Column = 1)) Then prcSynchronizeMe
End Sub
Sub prcSynchronizeMe()
Dim pgfPageField(1 To 3) As Object
Dim lngPGFPosition(1 To 3) As Long
Dim varEnableEvents As Variant
Dim i As Long
varEnableEvents = Application.EnableEvents
Application.EnableEvents = False
On Error Resume Next
Set pgfPageField(1) = Me.PivotTables(1).PageFields("Kalenderwochen")
lngPGFPosition(1) = pgfPageField(1).Position
Set pgfPageField(2) = Me.PivotTables(1).PageFields("Kunde Leistungsort")
lngPGFPosition(2) = pgfPageField(2).Position
Set pgfPageField(3) = Me.PivotTables(1).PageFields("Kunden Nr.")
lngPGFPosition(3) = pgfPageField(3).Position
'Synchronisieren von KW mit Kalenderwoche
'Me.PivotTables(1).PivotFields("KW").CurrentPage = "(All)"
With Me.PivotTables(1).PivotFields("KW")
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = True
Next i
End With
pgfPageField(1).Orientation = xlColumnField 'Umdefinieren PageField 'Kalenderwochen' wg. Excel2003-bug
For i = 1 To Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems.Count
Err.Clear
'If Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = False Then Me.PivotTables(1).PivotFields("KW").PivotItems(Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Value).Visible = False
If Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = False Then Me.PivotTables(1).PivotFields("KW").PivotItems(Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Name).Visible = False
Next i
'pgfPageField.Orientation = xlPageField 'Zurücksetzen PageField 'Kalenderwochen'
'Application.EnableEvents = False
For i = 1 To 3
pgfPageField(i).Orientation = xlPageField 'Zurücksetzen PageField 'Kalenderwochen'
pgfPageField(i).Position = lngPGFPosition(i)
Next i
'Application.EnableEvents = True
Application.EnableEvents = varEnableEvents
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Synchronisieren setzt Charts zurück
22.08.2013 08:09:16
Hendrik
Hier der komplette Code, sorry:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If ((Target.Row = 3 Or Target.Row = 4 Or Target.Row = 5) And (Target.Column = 1)) Then  _
prcSynchronizePivotTabs
End Sub

Sub prcSynchronizePivotTabs()
Dim pgfPageField(1 To 3) As Object
Dim lngPGFPosition(1 To 3) As Long
Dim i As Long
On Error GoTo ErrorHandler
Set pgfPageField(1) = Me.PivotTables(1).PageFields("Kalenderwochen")
lngPGFPosition(1) = pgfPageField(1).Position
Set pgfPageField(2) = Me.PivotTables(1).PageFields("Kunde Leistungsort")
lngPGFPosition(2) = pgfPageField(2).Position
Set pgfPageField(3) = Me.PivotTables(1).PageFields("Kunden Nr.")
lngPGFPosition(3) = pgfPageField(3).Position
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Cursor = xlWait
'Synchronisieren von KW mit Kalenderwoche
On Error Resume Next
prcSynchronizeMe
'For i = 1 To TabP1.PivotTables(1).PivotFields("Kalenderwochen").PivotItems.Count
' TabP1.PivotTables(1).PivotFields("KW").PivotItems(i).Visible = TabP1.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible
'Next i
On Error GoTo ErrorHandler
TabP1.PivotTables(1).PivotCache.Refresh
TabP3.PivotTables(1).PivotFields("Kunden Nr.").CurrentPage = CStr(Me.PivotTables(1).PivotFields("Kunden Nr.").CurrentPage.Value)
TabP4.PivotTables(1).PivotFields("Kunden Nr.").CurrentPage = CStr(Me.PivotTables(1).PivotFields("Kunden Nr.").CurrentPage.Value)
TabP3.PivotTables(1).PivotFields("Kunde Leistungsort").CurrentPage = CStr(Me.PivotTables(1).PivotFields("Kunde Leistungsort").CurrentPage.Value)
TabP4.PivotTables(1).PivotFields("Kunde Leistungsort").CurrentPage = CStr(Me.PivotTables(1).PivotFields("Kunde Leistungsort").CurrentPage.Value)
On Error Resume Next
pgfPageField(1).Orientation = xlColumnField 'Umdefinieren PageField 'Kalenderwochen' wg. Excel2003-bug
For i = 1 To TabP1.PivotTables(1).PivotFields("Kalenderwochen").PivotItems.Count
TabP3.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = TabP1.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible
TabP4.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = TabP1.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible
Next i
For i = 1 To 3
pgfPageField(i).Orientation = xlPageField 'Zurücksetzen PageField 'Kalenderwochen'
pgfPageField(i).Position = lngPGFPosition(i)
Next i
On Error GoTo ErrorHandler
TabP3.prcSynchronizeMe
TabP3.PivotTables(1).PivotCache.Refresh
TabP4.prcSynchronizeMe
TabP4.PivotTables(1).PivotCache.Refresh
ErrorHandler:
Application.ScreenUpdating = True
Application.Cursor = xlDefault
Application.EnableEvents = True
End Sub
Sub prcSynchronizeMe()
Dim pgfPageField(1 To 3) As Object
Dim lngPGFPosition(1 To 3) As Long
Dim varEnableEvents As Variant
Dim i As Long
varEnableEvents = Application.EnableEvents
Application.EnableEvents = False
On Error Resume Next
Set pgfPageField(1) = Me.PivotTables(1).PageFields("Kalenderwochen")
lngPGFPosition(1) = pgfPageField(1).Position
Set pgfPageField(2) = Me.PivotTables(1).PageFields("Kunde Leistungsort")
lngPGFPosition(2) = pgfPageField(2).Position
Set pgfPageField(3) = Me.PivotTables(1).PageFields("Kunden Nr.")
lngPGFPosition(3) = pgfPageField(3).Position
'Synchronisieren von KW mit Kalenderwoche
'Me.PivotTables(1).PivotFields("KW").CurrentPage = "(All)"
With Me.PivotTables(1).PivotFields("KW")
For i = 1 To .PivotItems.Count
.PivotItems(i).Visible = True
Next i
End With
pgfPageField(1).Orientation = xlColumnField 'Umdefinieren PageField 'Kalenderwochen' wg. Excel2003-bug
For i = 1 To Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems.Count
Err.Clear
'If Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = False Then Me.PivotTables(1).PivotFields("KW").PivotItems(Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Value).Visible = False
If Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Visible = False Then Me.PivotTables(1).PivotFields("KW").PivotItems(Me.PivotTables(1).PivotFields("Kalenderwochen").PivotItems(i).Name).Visible = False
Next i
'pgfPageField.Orientation = xlPageField 'Zurücksetzen PageField 'Kalenderwochen'
'Application.EnableEvents = False
For i = 1 To 3
pgfPageField(i).Orientation = xlPageField 'Zurücksetzen PageField 'Kalenderwochen'
pgfPageField(i).Position = lngPGFPosition(i)
Next i
'Application.EnableEvents = True
Application.EnableEvents = varEnableEvents
End Sub

Anzeige
AW: Makro zum Synchronisieren setzt Charts zurück
22.08.2013 13:35:53
Hendrik
Bereits ERLEDIGT!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige