Hallo Markus,
geht es nun um Balken oder um gestapelte Säulen? Das sind zwei völlig verschiedene Dinge. Balken werde nämlich quer dargestellt, während Säulen senkrecht sind.
Warum überhaupt so umständlich? Du brauchst doch nur die entsprechende Datenreihe markieren und dann im Ribbon Diagrammentwurf auf Daten auswählen gehen. Dort hast du zwei Pfeil-Buttons mit denen du die gewünschte Reihe ganz simpel nach oben oder unten schieben kannst. Beachte dabei die umgekehrte Reihenfolge. Ganz oben im Menü bedeutet ganz unten im Diagramm und umgekehrt.
Ja, PlotOrder ist definitiv die richtige Eigenschaft im VBA dafür, auch wenn es bei nur 4 Datenreihen pro Diagramm nicht wirklich nötig ist, dafür ein Makro zu bemühen. Diese alleine reicht aber nicht aus. Du musst zumindest wissen, welche Datenreihe grade bearbeitet wird und ob sich deren Farbe geändert hat. Eine wichtige Info dafür: Befinden sich die Diagramme auf einem Tabellenblatt oder sind sie eigenständige Diagrammblätter? In letzterem Fall könnte man das in VBA so angehen:
Dim sIndex As Long
Dim oldColor As Long
Private Sub Chart_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim newColor As Long
On Error Resume Next
newColor = ActiveChart.SeriesCollection(sIndex).Format.Fill.ForeColor.RGB
If newColor <> oldColor Then
MsgBox "Die Farbe " & newColor & " wurde gesetzt"
ActiveChart.SeriesCollection(sIndex).PlotOrder = ActiveChart.SeriesCollection.Count
oldColor = newColor
sIndex = ActiveChart.SeriesCollection.Count
End If
End Sub
Private Sub Chart_Select(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long)
On Error Resume Next
sIndex = Arg1
oldColor = ActiveChart.SeriesCollection(sIndex).Format.Fill.ForeColor.RGB
End Sub
Der Code muss in das Modul, das dem Diagrammblatt entspricht. Die Zeile mit der MsgBox kannst du später rausschmeißen. Die dient lediglich dazu, zu erfahren, welchen Farbwert du gesetzt hast. So könnte der Vergleich statt If newColor <> oldColor später lauten: If newColor = 12566463 um zu prüfen, ob der Balken auf das gewünschte Grau gesetzt wurde.
Leider gibt es kein Ereignis, das nach einem Farbwechsel anspringt. Das beste was ich dir anbieten kann, ist das MouseMove-Ereignis. Das löst aus, sobald du nach dem Farbwechsel den Mauszeiger wieder über das Diagramm führst.
Solltest du deine Diagramme hingegen auf einem Tabellenblatt verwalten. Dann melde dich nochmal. Sicher finden wir dafür dann auch noch eine Lösung.
Gruß Mr. K.
|