Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Diagramm Farben
#1
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?
Antworten Top
#2
Hallo B...,

ermittle am Anfang  mit "SeriesCollection.Count" die Anzahl der Datenreihen und prüfe vor jeder Farbzuweisung ob die Datenreihe vorhanden ist.
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:
  • Brodiak
Antworten Top
#3
(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
Antworten Top
#4
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
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:
  • Brodiak
Antworten Top
#5
(09.03.2018, 11:09)Ego schrieb: Hallo B...,

bitte sehr:

   
WOW,

vielen Dank! Funktioniert direkt auf Anhieb!!! :18: :18: :18:
Antworten Top
#6
Hi,

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


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste