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.

Makro: Bestimmte Farben der Datenreihen bei Diagrammerstellung
#1
Hallo erstmal an die Community,

ich würde euch gerne bei einem Problem um Hilfe bitten. Dies ist mein erster Eintrag, also korriegiert mich bitte wenn ich was falsch mache.

Ich Probiere es mal so gut wie möglich zu beschreiben:
Ich habe eine Tabelle aus der ich x und y Werte mithilfe eines Makros auslesen lasse und diese in einem Diagramm darstelle. Das funktioniert auch soweit einwandfrei. Die Datensätze werden dabei durch eine Schleife ausgelesen, da die X und Y-Werte in einer Zeile stehen. Also er ließt die erste Zeile aus, danach die zweite, etc. Leider kann ich die X und Y Werte nicht in einer Spalte darstellen.

Jetzt möchte ich aber einen Schritt weiter gehen und die einzelnen Datensätze in einer bestimmten Farbe darstellen.
Und zwar gibt es "Originale" und davon verschiedene "Varianten". Die verschiedenen Originale sollen sich in der Farbe komplett unterscheiden und die Varianten jeweils durch Nuancen der jeweiligen Originalen. Ich hoffe es ist soweit verständlich. Dazu habe ich ein kleines Beispiel angehängt.
Ich suche nach einem Code, bei dem eine Schleife durchlaufen wird und die Farbe direkt passend geändert wird.

Vielen Dank im Voraus an alle die mir helfen wollen Smile

   
Antworten Top
#2
Hallo Fabian,

wenn Du die Daten in verschiedenen Tabellenzeilen hast, dann hast Du doch auch verschiedene Datenreihen und kannst diese unterschiedlich einfärben, Da brauchst Du doch keinen Code, oder?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo André,

danke schonmal für die Antwort.

Leider ist es nicht ganz so leicht.
Ich probiere es nochmal zu beschreiben:

Also, ich habe eine dynamische Tabelle, aus der stets Zeilen gelöscht und hinzugefügt wird. Zb habe ich Original O1 mit zugehörigen Varianten O1_Var1, O1_Var2, O1_Var3. Weiter ein zweites Original O2 mit Varianten O2_Var1, O2_Var2, O2_Var3. Jetzt füge ich der Tabelle noch weitere Varianten hinzu zB. O2_Var4 und O2_Var5.
Durch ein vorhandenes Makro löscht er das alte Diagramm vollständig und baut dann alle Datenreihen neu auf.
Hier kommt mein Problem ins Spiel....
Ich möchte die Datenreihen beim Neuaufbau direkt richtig Färben. Sprich O1 soll rot zb. (255,0,0) sein und die Varianten davon leicht heller werden (255,15,15),(255,30,30),... usw.
Bei beim nächsten Original, soll Excel nun eine neue Farbe nehmen zB. (255,150,0) und die Varianten wieder nur leicht heller machen (255,115,15),(255,130,30).

Das Problem ist, dass es leicht 40-100 Datensätze werden können und immer wieder neue Originale und Varianten dazu kommen.
Antworten Top
#4
Hallo Fabian,

ein grobes Gerüst bekommst Du, wenn Du den code zum Einfärben aufzeichnest. Das sieht z.B. so aus:

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveSheet.ChartObjects("Diagramm 1").Activate
    ActiveChart.FullSeriesCollection(4).Select
    ActiveChart.FullSeriesCollection(4).Points(1).Select
    ActiveChart.FullSeriesCollection(3).Select
    With Selection.Format.Fill
      .Visible = msoTrue
      .ForeColor.ObjectThemeColor = msoThemeColorAccent4
      .ForeColor.TintAndShade = 0
      .ForeColor.Brightness = 0.6000000238
      .Transparency = 0
      .Solid
    End With
    ActiveChart.FullSeriesCollection(3).Points(1).Select
    ActiveChart.FullSeriesCollection(2).Select
    With Selection.Format.Fill
      .Visible = msoTrue
      .ForeColor.ObjectThemeColor = msoThemeColorAccent4
      .ForeColor.TintAndShade = 0
      .ForeColor.Brightness = 0.400000006
      .Transparency = 0
      .Solid
    End With
    ActiveChart.FullSeriesCollection(2).Points(1).Select
    ActiveChart.FullSeriesCollection(1).Select
    With Selection.Format.Fill
      .Visible = msoTrue
      .ForeColor.ObjectThemeColor = msoThemeColorAccent4
      .ForeColor.TintAndShade = 0
      .ForeColor.Brightness = -0.25
      .Transparency = 0
      .Solid
    End With
    ActiveChart.FullSeriesCollection(1).Points(1).Select
    With Selection.Format.Fill
      .Visible = msoTrue
      .ForeColor.ObjectThemeColor = msoThemeColorAccent4
      .ForeColor.TintAndShade = 0
      .ForeColor.Brightness = -0.5
      .Transparency = 0
      .Solid
    End With
    Range("G7").Select
End Sub

Da kann man reichlich kürzen, und man kann auch alternativ mit RGB-Farben arbeiten. Hier mal für 4 Datenpunkte der ersten Säule. Für die Zweite ist der code entsprechend, bei Points kommt nur eine 2 statt der 1. Mit den Farben musst Du schauen, da gibt's im Netz reichlich RGB-Tabellen.
Ist die Anzahl der Datenpunkte unterschiedlich? Dann müsste der code etwas flexibler gestaltet werden.

Code:
Sub Makro2()
'Variablendeklaration
Dim myChart As Chart
'Diagrammobjekt setzen
Set myChart = ThisWorkbook.Sheets("Tabelle1").ChartObjects("Diagramm 1").Chart
'Mit dem Diagramm
With myChart
  'Datenpunkte Farbe rot setzen
  .FullSeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
  .FullSeriesCollection(2).Points(1).Format.Fill.ForeColor.RGB = RGB(205, 0, 0)
  .FullSeriesCollection(3).Points(1).Format.Fill.ForeColor.RGB = RGB(155, 0, 0)
  .FullSeriesCollection(4).Points(1).Format.Fill.ForeColor.RGB = RGB(105, 0, 0)
'Ende Mit dem Diagramm
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hello againWink

Ich glaube so ganz konnte ich noch nicht rüberbringen, was ich versuche.
Ich möchte die Diagramme nicht nachträglich einfärben, sondern direkt bei der Erstellung. Also es wäre schon möglich, aber:

-ich möchte nicht die einzelnen Punkte, sondern die ganze Linie der Datenreihe einfärben
-da ich mehr als 30 Originale und zusätzlich noch mehrere Varianten haben werde, möchte ich nicht jedes mal das Makro verändern für die nächste Datenreihe.

Ich probier es nochmal anders  in Einzelschtritten zu beschreiben:
0. Lösche evtl altes Diagrammm
1. Erstelle Neues Diagramm
2. Erstelle Diagrammdatenreihe vom Original1 (erstmal egal welche Farbe das ist, aber nehmen wir an rot)
3. Nächste Zeile
4. Erstelle von dieser Zeile nächste Diagrammdatenreihe-->
    falls:
    a) diese Zeile eine Variante vom Original ist --> mache die Farbe des Originals etwas heller und verwende sie
    b) diese Zeile neues Original ist [O2] ---> nehme neue Farbe (zB. Orange [es sollte sich einfach von dem ersten Original unterscheiden])
5. Nächste Zeile
6. Erstelle von dieser Zeile nächste Diagrammdatenreihe-->
    falls:
    a) diese Zeile Variante vom Original [O2] ist --> mache die Farbe von O2 etwas heller und verwende Sie
    b) diese Zeile neues Original [O3] ist --> nehme neue Farbe (zB. grün)
.

.
.
und so weiter, bis das Ende der Tabelle erreicht ist.

Danke nochmal für deine Bemühungen Smile
Antworten Top


Gehe zu:


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