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

Auswahl im Datenschnitt Makro auslösen

Auswahl im Datenschnitt Makro auslösen
18.02.2020 15:28:28
haze
Hallo zusammen,
ich habe ein Tabellenblatt mit einer Pivot und 5 dazugehörigen Datenschnitten.
Je nachdem, in welchem Datenschnitt eine Auswahl getroffen wird, soll die Pivot entsprechend angepasst werden: es handelt sich um einen hierarchischen Drilldown von der obersten bis zur untersten Ebene.
Mein Problem: Das Makro soll von sich aus nach Auswahl eines Filters starten und auch irgendwann aufhören ;).
Wenn ich mit "Worksheet_PivotTableUpdate" oder "Worksheet_Change" arbeite, dann handelt es sich um eine Endlosschleife und das Makro endet nie.
Habt ihr hier eine Idee, wie ich das Makro anhand der Auswahl in einem Datenschnitt (und zwar egal in welchem der 5) nur einmal auslösen kann?
Herzlichen Dank für eure Mühe und viele Grüße
haze
Public Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
'### Etwas kryptische Formel: Wenn ein Eintrag im Datenschnitt aktiviert ist, dann bedeutet das  _
_
= true!
'Deshalb werden "False" item angesprochen, ganz einfach deshalb: Es ist egal welcher Filter auf  _
_
einen Datenschnitt angewendet wird,
'nur das ein Filter (Wie gesagt egal welcher) angesprochen wurde reicht aus, um das MAkro  _
anzuwerfen!
Dim objItem As SlicerItem
Application.ScreenUpdating = False
For Each objItem In ActiveWorkbook.SlicerCaches("Datenschnitt_Cost_level_11").SlicerItems
If objItem.Selected = False Then 'Wenn ein Item abgewählt, dann Filter aktiv!
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =   _
_
xlHidden Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =  _
xlRowField
End If 'Blende das richtige Pivot Field ein (sofern noch nicht vorhanden) und alle   _
_
anschließend aus
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation  _
_
= xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =   _
_
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation  _
_
= xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =   _
_
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation  _
_
= xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =   _
_
xlHidden
End If
End If
Next
'### Ab hier analog oberer Block, aber auf die anderen Datenschnitte angewnedet (andere  _
Pivot Field nötig)
For Each objItem In ActiveWorkbook.SlicerCaches("Datenschnitt_Cost_level_21").SlicerItems
If objItem.Selected = False Then
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =  _
xlHidden Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =  _
xlRowField
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlHidden
End If
End If
Next
For Each objItem In ActiveWorkbook.SlicerCaches("Datenschnitt_Cost_level_31").SlicerItems
If objItem.Selected = False Then
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =  _
xlHidden Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =  _
xlRowField
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlHidden
End If
End If
Next
For Each objItem In ActiveWorkbook.SlicerCaches("Datenschnitt_Cost_level_41").SlicerItems
If objItem.Selected = False Then
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlHidden Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlRowField
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =  _
xlHidden
End If
End If
Next
For Each objItem In ActiveWorkbook.SlicerCaches("Datenschnitt_Cost_Element1").SlicerItems
If objItem.Selected = False Then
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlHidden Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost Element").Orientation =  _
xlRowField
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 3").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 4").Orientation =  _
xlHidden
End If
If ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =   _
_
xlRowField Then
ActiveSheet.PivotTables("CCCockpit").PivotFields("Cost level 2").Orientation =  _
xlHidden
End If
End If
Next
Application.ScreenUpdating = True
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahl im Datenschnitt Makro auslösen
19.02.2020 06:56:03
Luschi
Hallo haze,
einen Ansatz (1. Vorahnung), wie das gehen könnte, findest Du hir:
https://blog.soprani.at/2016/08/08/ereignis-beim-klick-auf-datenschnitt/
Die Idee ist stark ausbaufähig. Wenn Du eine Demodatei bereitstellst, helfe ich Dir weiter.
Gruß von Luschi
aus klein-Paris
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge