Thema Datum  Von Nutzer Rating
Antwort
10.08.2022 14:36:24 markusy
Solved
Blau VBA Balken mit bestimmter Farbe hochsetzen
10.08.2022 20:11:17 xlKing
*****
NotSolved
12.08.2022 11:21:47 Markusy
NotSolved
12.08.2022 14:18:33 markusy
NotSolved
12.08.2022 18:48:34 xlKing
*****
NotSolved
16.08.2022 16:17:40 markusy
NotSolved
17.08.2022 22:10:13 xlKing
*****
NotSolved
18.08.2022 14:22:00 markusy
NotSolved
18.08.2022 23:35:05 xlKing
*****
NotSolved
22.08.2022 14:30:57 Gast33285
Solved
24.08.2022 02:08:22 xlKing
*****
NotSolved
24.08.2022 13:58:26 markusy
Solved

Ansicht des Beitrags:
Von:
xlKing
Datum:
10.08.2022 20:11:17
Views:
455
Rating: Antwort:
  Ja
Thema:
VBA Balken mit bestimmter Farbe hochsetzen

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
10.08.2022 14:36:24 markusy
Solved
Blau VBA Balken mit bestimmter Farbe hochsetzen
10.08.2022 20:11:17 xlKing
*****
NotSolved
12.08.2022 11:21:47 Markusy
NotSolved
12.08.2022 14:18:33 markusy
NotSolved
12.08.2022 18:48:34 xlKing
*****
NotSolved
16.08.2022 16:17:40 markusy
NotSolved
17.08.2022 22:10:13 xlKing
*****
NotSolved
18.08.2022 14:22:00 markusy
NotSolved
18.08.2022 23:35:05 xlKing
*****
NotSolved
22.08.2022 14:30:57 Gast33285
Solved
24.08.2022 02:08:22 xlKing
*****
NotSolved
24.08.2022 13:58:26 markusy
Solved