Clever-Excel-Forum

Normale Version: VBA Diagramm Farben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich möchte per VBA die Balkenfarben meines Diagramms verändern. Dieses ist mir auch erfolgreich mit folgendem Code gelungen:


Sub farbe()
With ActiveSheet.ChartObjects("Diagramm 1").Chart.SeriesCollection(1)
  With .Border
    .Weight = xlThin
    .LineStyle = xlAutomatic
  End With
  With .Interior
    .Color = RGB(125, 0, 0)
    .Pattern = xlSolid
  End With
End With
With ActiveSheet.ChartObjects("Diagramm 1").Chart.SeriesCollection(2)
  With .Border
    .Weight = xlThin
    .LineStyle = xlAutomatic
  End With
  With .Interior
    .Color = RGB(255, 0, 255)
    .Pattern = xlSolid
  End With
End With
With ActiveSheet.ChartObjects("Diagramm 1").Chart.SeriesCollection(3)
  With .Border
    .Weight = xlThin
    .LineStyle = xlAutomatic
  End With
  With .Interior
    .Color = RGB(0, 60, 255)
    .Pattern = xlSolid
  End With
End With
End Sub

Nun folgendes Problem:

Dieser Code gilt so für 3 verschiedene Datensätze (Balken) mit 3 verschiedenen Farben und funktioniert auch super, wenn es immer um genau 3 Datensätze geht.

Hat das Diagramm aber nur 2 Datensätze erscheint ein VBA Fehler. Der Code möchte einem Balken, der nicht existiert, eine Farbe zuordnen.

Jemand ne Idee wie man das Problem umgehen kann?
Hallo B...,

ermittle am Anfang  mit "SeriesCollection.Count" die Anzahl der Datenreihen und prüfe vor jeder Farbzuweisung ob die Datenreihe vorhanden ist.
(08.03.2018, 14:35)Ego schrieb: [ -> ]Hallo B...,

ermittle am Anfang  mit "SeriesCollection.Count" die Anzahl der Datenreihen und prüfe vor jeder Farbzuweisung ob die Datenreihe vorhanden ist.

Hi Helmut,

danke erstmal...

Bin in VBA nicht sehr fit.. kannst mir da vielleicht genauer sagen was ich genau zu tun habe.. also den kompletten Code aufschreiben? Wüsste jetzt nicht wie ich prüfen sollte ob die Datenreihe vorhanden ist... Huh
Hallo B...,

bitte sehr:
Code:
Option Explicit
Sub farbe()
Dim intPos As Integer
With ActiveSheet.ChartObjects("Diagramm 1").Chart
  For intPos = 1 To .SeriesCollection.Count
    With .SeriesCollection(intPos)
      With .Border
        .Weight = xlThin
        .LineStyle = xlAutomatic
      End With
      With .Interior
        Select Case intPos
        Case 1
          .Color = RGB(125, 0, 0)
        Case 2
          .Color = RGB(255, 0, 255)
        Case Else
          .Color = RGB(0, 60, 255)
        End Select
        .Pattern = xlSolid
      End With
    End With
  Next intPos
End With
End Sub
(09.03.2018, 11:09)Ego schrieb: [ -> ]Hallo B...,

bitte sehr:

   
WOW,

vielen Dank! Funktioniert direkt auf Anhieb!!! :18: :18: :18:
Hi,

das heißt aber, daß bei mehr als 3 SeriesCollection im Diagramm die mit Nummer 3 bis Ende alle die gleiche Farbe bekommen!