AW: Per VBA Änderung im Berichtsfilter abfragen PIVOT
04.01.2011 19:32:14
fcs
Hallo Holger,
welches Element einer Pivot-Tabelle vor dem Update-Ereignis geändert wurde ist nicht ohne weiteres feststellbar. Hier müsste man Vorher-Nachher-Vergleich durchführen, also relativ viel Informationen in Variablen zwischenspeichern.
Es ist aber kein Problem die Auswahllisten mehrerer Pivot-Tabellen für ein gleichnamiges Element zu synchronisieren.
Gruß
Franz
'Estellt unter Excel 2007
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim oPvTab As PivotTable, oPvField As PivotField, sPvName As String
Dim oPvField2 As PivotField, bVisible As Boolean
Dim oPvItem As PivotItem, oPvItem2 As PivotItem
sPvName = Target.Name 'Name der geänderten Piovt-Tabelle
Application.EnableEvents = False
'Objekt setzen für Feld in geänderter Pivot-Tabelle
Set oPvField = Target.PivotFields("Periode")
'andere Pivottabellen anpassen
For Each oPvTab In Me.PivotTables
If oPvTab.Name sPvName Then
'Objekt setzen für Feld in anderer Pivot-Tabelle
Set oPvField2 = oPvTab.PivotFields("Periode")
'ausgeblendete Items in anderer Tabelle einblenden
For Each oPvItem2 In oPvField2.HiddenItems
For Each oPvItem In oPvField.VisibleItems
If oPvItem2.Name = oPvItem.Name Then
oPvItem2.Visible = True
Exit For
End If
Next
Next
'nicht selektierte Items in anderer Pivot-Tabelle ausblenden
For Each oPvItem2 In oPvField2.VisibleItems
bVisible = False
For Each oPvItem In oPvField.VisibleItems
If oPvItem2.Name = oPvItem.Name Then
bVisible = True
Exit For
End If
Next
If bVisible = False Then
oPvItem2.Visible = False
End If
Next
End If
Next
Application.EnableEvents = True
End Sub