In einem Diagramm, in meinem Falle Balken werden durch anklicken einer dargestellten Farbe die gleichen Farben in den restlichen Datenreihen ebenfalls markiert. Die hat den Vorteil, dass man die zugehörige Reihe in der Tabelle und in allen Balken im Diagramm erkennt. Ich möchte nun alle nicht gewählten Farben in den Hintergrund "drücken/dimmen". hierzu habe ich eine Datei angehängt die das, so hoffe ich, einigermaßen gut beschreibt.
Den Code in ein algm. Modul und einem Button zuweisen.
Code:
Sub Makro2() Dim z, strAktiv As String
If TypeName(Selection) = "Series" Then strAktiv = Selection.Name For Each z In ActiveChart.SeriesCollection If z.Name = strAktiv Then z.Format.Fill.Transparency = 0 Else z.Format.Fill.Transparency = 0.8 End If Next z End If End Sub
das was ich vorgeschlagen habe, funktioniert leider nur bei Diagrammblättern, nicht bei eingebetteten Diagrammen. Bei den Diagrammblättern ist dies so leicht, dass du das selber hinbekommst.
Bei eingebetteten Diagrammen müsste man ein Klassenmodul mit zugehörigen Events entwerfen. Das übersteigt jedoch meine Fähigkeiten.
Falls du PowerBI hast: Dort hast du die gewünschte Funktionalität automatisch mit drin.
Dim myClassModule As New Klasse1 Private Sub Workbook_Open() Set myClassModule.myChartClass = Worksheets("WB (2)").ChartObjects("Diagramm 1").Chart End Sub
Im Klassenmodul "Klasse 1":
Code:
Option Explicit
Public WithEvents myChartClass As Chart
Private Sub myChartClass_BeforeRightClick(Cancel As Boolean) Dim Gefunden As Boolean Dim Ser As Series Dim Aktiv As String Aktiv = Selection.Name
If TypeName(Selection) = "Series" Then For Each Ser In ActiveChart.SeriesCollection If Ser.Name = Aktiv Then Ser.Format.Fill.Transparency = 0 Else Ser.Format.Fill.Transparency = 0.8 End If Next Ser Else For Each Ser In ActiveChart.SeriesCollection Ser.Format.Fill.Transparency = 0 Next Ser End If
End Sub
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • HKindler
das scheint genau das zu sein, was ich mir vorgestellt, aber nicht zugetraut habe. Sogar das .Transparency=0 bei Auswahl keiner Reihe hast du eingebaut.
Aber wieso verwendest du BeforeRightClick anstatt Select? Und wenn schon, dann würde es Sinn machen, dass dann auch Cancel auf True gesetzt wird - zumindest bei Auswahl einer Reihe.