Office: XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben

Helfe beim Thema XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hi Beverly und andere Excel-Profis! Ich arbeite gerade an einer Liste mit diversen XY-Diagrammen in verschiedenen Blättern. Das Blatt Diagramm... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Badaway, 22. August 2014.

  1. XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben


    Hi Beverly und andere Excel-Profis!

    Ich arbeite gerade an einer Liste mit diversen XY-Diagrammen in verschiedenen Blättern.
    Das Blatt Diagramm enthält 3 Charts
    Dann folgen Blatt A, B, C und D mit jeweils einem Chart und gefärbten Zellen
    Und zu schluss das Blatt Daten mit den Daten.

    Ich würde jetzt gerne mit der Farbe der Zelle des Reihennamens aus dem Blatt Daten (z.B. A) die Datenreihen bzw Linien der 3 Charts, welche sich in dem Blatt Diagramm befinden färben. Weiters sollen die gefärbten Zellen im Blatt A mit derselben Farbe gefärbt werden. (Die Charts in den Blättern A, B, C, D sollen andere Farben erhalten).

    Vielen Dank im vorraus,

    lg, Badaway
     
    Badaway, 22. August 2014
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Badaway,

    das Anpassen der Reihenfarben im Tabellenblatt "Diagramme" kannst du so lösen:

    Code:
    Sub DatenreihenFaerben()
       Dim lngReihe As Long
       Dim strReihe As String
       Dim lngZellFarbe As Long
       Dim chrDia As ChartObject
       For Each chrDia In Worksheets("Diagramm").ChartObjects
          With chrDia.Chart
             For lngReihe = 1 To .SeriesCollection.Count
                strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(lngReihe).Format.Line
                   .Visible = msoTrue
                   .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                   .Transparency = 0
                End With
             Next lngReihe
          End With
       Next chrDia
    End Sub

    Was deine andere Frage bezüglich der Färbung der Zellen angeht - worus ist ersichtliche, welcher Zellbereich gefärbt werden soll? Klar, in deinen Tabellenblättern sind die Breich schon gefärbt, von Hand nehme ich an, aber wie kann VBA erkennen, um welche Bereiche es sich handelt, denn sie sind ja in jedem Tabellenblatt anders.


    Bis später,
    Karin
     
    Beverly, 22. August 2014
    #2
  3. Hi Karin,

    vielen Dank für die schnelle Lösung!

    Der Code funkt vom Prinzip genau wie ich es mir vorgestellt habe. Mir fehlt nur leider der Durchblick um den Code richtig anzupassen.

    1. In den Charts befinden sich noch die Datenreihen "VB50" und "Intersections". Diese waren vorher Schwarz bzw. Rot und sollen die Farbe nicht ändern. Jetzt sind sie weiß. Wie kann ich diese am einfachsten wieder mit den alten Farben einfärben? Soll ich Datenreihen neben A, B, C und D aufbereiten und die Zellen der Namen eifärben oder ist es möglich diese auszuschließen?

    2. Es ändern sich nur die Farben der Datenreihen von einem Chart und nicht von allen. Wie kann ich das lösen?

    Das mit den anderen Tabellenblättern muss ich scheinbar nochmal überdenken, aber eines nach dem anderen ;)#

    Danke nochmal,

    Rene
     
    Badaway, 22. August 2014
    #3
  4. Beverly
    Beverly Erfahrener User

    XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben

    Hi Rene,


    zu 1.: ergänze den Code wie folgt:

    Code:
             For lngReihe = 1 To .SeriesCollection.Count
                [COLOR=#ff0000]If InStr(.SeriesCollection(lngReihe).Name, "VB") = 0 Then[/COLOR]
                   strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                   strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                   With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(lngReihe).Format.Line
                      .Visible = msoTrue
                      .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                      .Transparency = 0
                   End With
                [COLOR=#ff0000]End If[/COLOR]
             Next lngReihe
    

    Zu 2.: mit dem Code werden die Datenreihen aller 3 Diagramme im Tabellenblatt "Diagramm" geändert - nicht nur von einem der 3 Diagramme. Das erkennst du daran, dass der Code in einer Schleife abläuft

    Code:
    For Each chrDia In Worksheets("Diagramm").ChartObjects
    Bis später,
    Karin
     
    Beverly, 22. August 2014
    #4
  5. Beverly
    Beverly Erfahrener User
    Hi Rene,

    ich habe gerade gesehen, dass in dieser Codezeile der rot markierte Teil noch weg muss:

    Code:
                   With [B][COLOR=#ff0000]ActiveSheet.ChartObjects(1).Chart[/COLOR][/B].SeriesCollection(lngReihe).Format.Line
    Ich hatte ihn zu Testzwecken eingefügt und dann vergessen, ihn wieder zu entfernen, als ich den Code gepostet habe. Der Code bedeutet, dass nur im 1. Diagramm die Datenreihen geändert werden sollen, was natürlich falsch ist. Nun sollten auch tatsächlich die Datenreihen in allen 3 Diagrammen korrekt formatiert werden.

    Bis später,
    Karin
     
    Beverly, 22. August 2014
    #5
  6. Hey Karin,

    du bist ein Wahnsinn!!! :) Danke!

    Kannst du mir noch erklären wie ich andere Optionen wie z.B. ändern der Größe oder Stärke der Markierungspunkte einbauen kann?

    Ich habe den Code auch verwendet um die Diagramme der anderen Blätter von A bis D einzufärben. Funktioniert so wie unten eingefügt, doch vl hast du eine elegantere Lösung? Der Vorteil hier wäre, dass ich für jedes Diagramm eigene Einstellungen festlegen kann. Ist aber eig nicht notwendig.

    Code:
    Sub DatenreihenFaerbenAbisD()
       Dim lngReihe As Long
       Dim strReihe As String
       Dim lngZellFarbe As Long
       Dim chrDia As ChartObject
       For Each chrDia In Worksheets("A").ChartObjects
          With chrDia.Chart
             For lngReihe = 1 To .SeriesCollection.Count
                strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                With .SeriesCollection(lngReihe).Format.Line
                   .Visible = msoTrue
                   .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                   .Transparency = 0
                End With
             Next lngReihe
          End With
       Next chrDia
       
       For Each chrDia In Worksheets("B").ChartObjects
          With chrDia.Chart
             For lngReihe = 1 To .SeriesCollection.Count
                strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                With .SeriesCollection(lngReihe).Format.Line
                   .Visible = msoTrue
                   .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                   .Transparency = 0
                End With
             Next lngReihe
          End With
       Next chrDia
    .......
    
    Zu den eingefärbten Zellen: Ist es möglich, dass VBA eingefärbte Zellen in einem Tabellenblatt (z.B. A) und nur diese mit derselben Farbe der Datenreihen einfärbt? Andere Zellen werden nämlich nicht gefärbt und anfangs muss ich es immer manuell einfärben um das Layout zu bestimmen doch für die farbliche Abstimmung wärs dann praktisch.

    Bis später, Rene
     
    Badaway, 25. August 2014
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi Rene,

    zu Frage 1: die Marker verändern kann man gewiss, aber da müsste man schon wissen wie sie aussehen sollen.

    .MarkerStyle ist die Form
    .MarkerSize ist die Größe
    .Format.Fill ist die Füllung, die sich wiederum in mehrere Eigenschaften unterteilt
    .Format.Line ist die Markerumrandung, die sich ebenfalls in mehrere Eigenschaften untereilt

    Wie der relevante Code dafür auszusehen hat, kann man mit dem Makrorekorder aufzeichnen



    Zu Frage 2: ich nehme an, du meinst das so

    Code:
    Sub DatenreihenFaerben()
       Dim lngReihe As Long
       Dim strReihe As String
       Dim lngZellFarbe As Long
       Dim chrDia As ChartObject
       Dim wksTab As Worksheet
       Dim rngZelle As Range
       For Each wksTab In Worksheets
          ' Schleife über alle Diagramm
          For Each chrDia In wksTab.ChartObjects
             With chrDia.Chart
                For lngReihe = 1 To .SeriesCollection.Count
                   If InStr(.SeriesCollection(lngReihe).Name, "VB") = 0 Then
                       strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                       strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                       With .SeriesCollection(lngReihe).Format.Line
                          .Visible = msoTrue
                          .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                          .Transparency = 0
                       End With
                   End If
                Next lngReihe
             End With
          Next chrDia
          ' falls nur 1 Diagramm vorhanden
          If wksTab.ChartObjects.Count = 1 Then
             ' aisfürhen im betreffenden tabellenblatt
             With wksTab
                ' schleife über alle Zellen im benutzten Bereich
                For Each rngZelle In .UsedRange
                   ' laufende Zelle hat Hintergundfarbe, dann färben wie Zelle für den Reihennamen
                   If rngZelle.Interior.ColorIndex <> xlNone Then .Range(rngZelle.Address).Interior.Color = _
                      Worksheets("Daten").Range(strReihe).Interior.Color
                Next rngZelle
             End With
          End If
       Next wksTab
    End Sub

    Bis später,
    Karin
     
    Beverly, 25. August 2014
    #7
  8. XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben

    Hi Karin,

    guter Tipp mit dem Makrorecorder, ich werd mich da mal spielen. :)

    Zu dem neuen Code:
    Cool, funktioniert! Mir ist nur aufgefallen, dass die gefärbten Zellen in den Blättern immer die Farbe der letzten Datenreihe annehmen. Besser wäre, wenn die Farbe der Zellen in den Blättern von A bis D die Farbe des Reihennamens der Diagramme aus dem Blatt Diagramm hat.

    Die Liste ist so zu verstehen:
    Es werden 4 Produkte getestet - A, B, C, D
    Die Diagramme im Blatt Diagramm zeigen wie sich die 4 Produkte zueinander verhalten. Jedes Produkt erhält eine Farbe. In den Blättern A bis D gehe ich dann detailliert auf die Produkte ein und zeige in den einzelnen Diagrammen die Entwicklung des einzelnen Produktes. Die Datenreihen der Einzeldiagramme erhalten unterschiedliche Farben - siehe Anhang. Anbei ein Beispiel

    Lg, Rene
     
    Badaway, 25. August 2014
    #8
  9. Beverly
    Beverly Erfahrener User
    Hi Rene,

    aus deiner vorhergehenden Mappe hatte ich etwas anderes entnommen und meinen Code dahingehend geschrieben - Antworten können immer nur so genau sein, wie die Vorgaben sind...:)

    Code:
    Sub DatenreihenFaerben()
       Dim lngReihe As Long
       Dim strReihe As String
       Dim chrDia As ChartObject
       Dim wksTab As Worksheet
       Dim rngZelle As Range
       Dim arrFarben
       ReDim arrFarben(0 To 3)
       Dim bytZaehler As Byte
       arrFarben = Array(Array("A", "B", "C", "D"), Array(0, 0, 0, 0))
       For Each wksTab In Worksheets
          ' Schleife über alle Diagramm
          For Each chrDia In wksTab.ChartObjects
             With chrDia.Chart
                For lngReihe = 1 To .SeriesCollection.Count
                   If InStr(.SeriesCollection(lngReihe).Name, "VB") = 0 Then
                       strReihe = Application.Substitute(Split(.SeriesCollection(lngReihe).Formula, ",")(0), "=SERIES(", "")
                       strReihe = Mid(strReihe, InStr(strReihe, "!") + 1)
                       With .SeriesCollection(lngReihe).Format.Line
                          .Visible = msoTrue
                          .ForeColor.RGB = Worksheets("Daten").Range(strReihe).Interior.Color
                          .Transparency = 0
                       End With
                       ' Farben ins Array schreiben
                       If wksTab.Name = "Diagramm" Then
                         bytZaehler = Application.Match(.SeriesCollection(lngReihe).Name, arrFarben(0), 0) - 1
                         arrFarben(1)(bytZaehler) = Worksheets("Daten").Range(strReihe).Interior.Color
                       End If
                   End If
                Next lngReihe
             End With
          Next chrDia
          ' falls nur 1 Diagramm vorhanden
          If wksTab.ChartObjects.Count = 1 Then
             ' ausführen im betreffenden Tabellenblatt
             With wksTab
                ' Position der Farbe im Array ermitteln
                bytZaehler = Application.Match(wksTab.Name, arrFarben(0), 0) - 1
                ' Schleife über alle Zellen im benutzten Bereich
                For Each rngZelle In .UsedRange
                   ' laufende Zelle hat Hintergundfarbe, dann färben wie Zelle für den Reihennamen (=Arrayinhalt)
                   If rngZelle.Interior.ColorIndex <> xlNone Then .Range(rngZelle.Address).Interior.Color = _
                      arrFarben(1)(bytZaehler)
                Next rngZelle
             End With
          End If
       Next wksTab
    End Sub
    
    Ich hoffe, dass dieser Code nun deinen tatsächelichen Vorstellungen entspricht.

    Bis später,
    Karin
     
    Beverly, 25. August 2014
    #9
  10. Hi Karin,

    jap, zu den Vorgaben und Anworten kann ich dir nur recht geben. Es ist für mich nicht so einfach alle Details, die für dich wichtig sind, schriftlich mitzuteilen, da sie für mich selbstverständlich sind. Ich habe jedoch im Zuge des Gefechts gemerkt, dass ich an einer präziseren Ausdrucksweise arbeiten sollte und bedanke mich für deine Geduld! :)

    Jetzt passts aber wirklich. Du hast mir sehr geholfen. Das ist eine große Erleichterung für mich.

    Ich habe nur noch eine kleine Zusatzfrage:
    Die Produkte bekommen diverse Namen wie z.B. WAL_F24R_ROH120M0-F7_W36. Ich habe versucht diese in meiner vollständigen Version mit z.B. A auszutauschen. Der Code hat nicht funktioniert, bis ich die Sonderzeichen entfernt habe. Ich dachte, dass Sonderzeichen in Zeichenketten zwischen Hochkommas ignoriert bzw. wie Buchstaben oder Zahlen gelesen werden. Ist das Generell nicht so? Oder wie verhält sich das?

    Lg, Rene
     
    Badaway, 25. August 2014
    #10
  11. Beverly
    Beverly Erfahrener User
    Hi Rene,

    was meinst du mit Sonderzeichen - die Unterstriche? Schreibe ins Array dieses: "'WAL_F24R_ROH120M0-F7_W36'" - also an den Beginn und ans Ende einen Apostroph. Einfach mal testen.

    Bis später,
    Karin
     
    Beverly, 25. August 2014
    #11
  12. Hey Karin,

    ja, ich hab die Unter- und Bindestriche gemeint. Das mit dem Apostroph hat nicht funktioniert. Doch ich habe beim probieren den Fehler entdeckt. Bei einem Produkt war der Name zu lang für den Blattnamen und ich hab deshalb am Schluss eine 0 weggelassen. Deswegen passten die Namen im Code mit der Zelle im Blatt "Daten" und der Benennung des Produktblattes nicht zusammen.

    Also somit auch das geklärt.

    TY & Bis bald, Rene
     
    Badaway, 25. August 2014
    #12
Thema:

XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben

Die Seite wird geladen...
  1. XY-Diagrammlinien mit Farbe der Zelle des Reihennamens färben - Similar Threads - Diagrammlinien Farbe Zelle

  2. 56 Benutzerdefinierte Farben in die Farbpalette integrieren

    in Microsoft Excel Hilfe
    56 Benutzerdefinierte Farben in die Farbpalette integrieren: Hallo liebe Excel-Küstler. Nachdem ich alles aufgeschrieben hatte, konnte ich den Text hier leider nicht mehr einfügen. Daher meine Fragestellung als PDF-Datei-Anhang. Konnte man das nicht früher...
  3. Gedruckte Farbe der Kommentarblasen ändern

    in Microsoft Word Hilfe
    Gedruckte Farbe der Kommentarblasen ändern: Hallo Forum, früher konnte man die Farbe der Kommentarblasen noch auswählen, wie dieser Screenshot aus einer älteren Word-Version zeigt: [ATTACH] Inzwischen scheint das jedenfalls dort nicht...
  4. Bericht per VBA formatieren

    in Microsoft Access Hilfe
    Bericht per VBA formatieren: Hallo, kann ich in einem Bericht die Rahmenfarbe im Detailbereich, auf Grundlage eines Werts im Datenfeld (lblZeitrahmen) verändern? Wert 1 = Orange Wert 2 = Rot Wert 3 = grün Wert 4 = blau...
  5. Kalenderfarbe: Termine außerhalb meiner Organisation

    in Microsoft Outlook Hilfe
    Kalenderfarbe: Termine außerhalb meiner Organisation: Hallo zusammen, ich habe in meinem Kalender einige bedingte Formatierungen für die Farbe (bspw. Terminblocker oder Termine von bestimmten Personen) und würde gerne Termine mit externen Personen...
  6. Phänomen in der Textbearbeitung

    in Microsoft Excel Hilfe
    Phänomen in der Textbearbeitung: Hallo Leute, die Frage nach farblicher Umgestaltung einzelner Textpassagen oder auch Buchstaben habe ich schon öfter gehört. Bei den Antworten, welche schon länger her waren, hieß es immer, dass...
  7. Serienbrief Seriendruckfeld Farbe ändern

    in Microsoft Word Hilfe
    Serienbrief Seriendruckfeld Farbe ändern: Hallo, ich habe in Excel Daten gesammelt, diese möchte ich nun in einen Serienbrief ausgeben. Das ist mir soweit bekannt. Meine Frage kann man die Übergabe auch die Formatierung der Schrift...
  8. Diagrammlinien per Checkbox ein und ausblenden

    in Microsoft Excel Hilfe
    Diagrammlinien per Checkbox ein und ausblenden: Hallo Leute *Smilie Ich habe das ganze Forum durchsucht nur bekomme ich keine passende Antwort auf meine Frage. Ich habe in Excel ein "dynamisches" Diagramm erstellt, dass sich bei Eingabe neuer...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden