136766
Goto Top

Balken im Diagramm, Farbe abhängig von Hilfespalte

Hallo zusammen,

ich suche nach einem Weg die Farbe der Balken in einem Diagramm abhängig von der Datenquelle zu färben. Das müsste von einer Hilfspalte mit zu definierendem Inhalt abhängig sein. die Hilfespalte ist unmittelbar neben der Quellspalte - sprich wenn zb. ein Name einen Wert von 900 steht in der Hilfespalte 100 und nur der Quellwert und Name soll im Diagramm erscheinen mit dem ausgewählten Farbe abhängig von der Wert aus der Hilfespalte.

Bin für jede Idee dankbar.


Hier der Code der die Grafik erstellt
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets.Add

ws.Name = "Diagramm"  

Dim co As ChartObject
Dim ch As Chart

Set co = ThisWorkbook.Worksheets("Diagramm").ChartObjects.Add(175, 10, 750, 750)  
'Set ch = co.Chart  

    With co.Chart

        .SetSourceData Worksheets("Risikoindikator").Range("A1:B63")  
        .ChartType = xlBarClustered
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Prozesse"  
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Risikoindikator"  
        .SetElement (msoElementDataLabelOutSideEnd)
        .SetElement (msoElementLegendNone)
       
    End With

Dim lngPunkt As Long
    Dim lngFarbe As Long
    With co.Chart
    
        For lngPunkt = 1 To .SeriesCollection(1).Points.Count
            Select Case Worksheets("Risikoindikator").Cells(lngPunkt, 3).Value  
                Case 0
                    lngFarbe = 255
                Case 10
                    lngFarbe = 12379352
                Case 50
                    lngFarbe = 10213316
                Case 100
                    lngFarbe = 5296274
                
            End Select
            .SeriesCollection(2).Points(lngPunkt).Interior.Color = lngFarbe
        Next lngPunkt
    End With
   

Fehlermeldung: ungültiger Parameter bei dieser Zeile
.SeriesCollection(2).Points(lngPunkt).Interior.Color = lngFarbe


EDIT!!!!!


Schönen sonnigen Freitag face-smile

Content-Key: 381536

Url: https://administrator.de/contentid/381536

Printed on: May 4, 2024 at 07:05 o'clock

Member: colinardo
colinardo Jul 27, 2018 updated at 11:13:46 (UTC)
Goto Top
Moinsens.
Tja, leider sagst du kein Wort darüber wie der Wert (z.B . 100) einer Farbe zugeordnet werden soll. Daher hier einfach mal ein Beispiel das die Zahl die in Spalte C steht als Prozentwert interpretiert (Werte von 0 bis 100 möglich) und das ganze dann mit einem Rot-Ton skaliert:
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets.Add

ws.Name = "Diagramm"  

Dim co As ChartObject
Dim ch As Chart

Set co = ThisWorkbook.Worksheets("Diagramm").ChartObjects.Add(175, 10, 750, 750)  

With co.Chart

    .SetSourceData Worksheets("Risikoindikator").Range("A1:B63")  
    .ChartType = xlBarClustered
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Prozesse"  
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Risikoindikator"  
    .SetElement (msoElementDataLabelOutSideEnd)
    .SetElement (msoElementLegendNone)
   
    For i = 1 To .SeriesCollection(1).Points.Count
        With .SeriesCollection(1).Points(i).Format.Fill
            .Visible = True
            .ForeColor.RGB = RGB((Sheets("Risikoindikator").Range("C2:C63").Cells(i).Value / 100) * 255, 0, 0)  
            .Solid
        End With
    Next
End With
Jetzt darfst du selbst damit spielen :-P.

Grüße Uwe

-edit- Typo im Code korrigiert
Mitglied: 136766
136766 Jul 27, 2018 at 11:38:13 (UTC)
Goto Top
ich habe 4 verschiedene Farben
Case 1 = weiß (schwarzer rahmen)
case 10= gelb
case 50=hell rot
case 100= dunkelrot

ich würde gerne an meinem Code Anpassungen finden. dein Code sagt mir leider nicht viel ....

 With Worksheets("Risikoindikator")  
 For i = 4 To 63
 Set p = ch.SeriesCollection(1).Points(i - 1)
 Select Case .Cells(i, 3)
 Case 0:    lngColor = RGB(100, 200, 230)
 Case 1:    lngColor = RGB(150, 200, 200)
 Case 50:    lngColor = RGB(130, 198, 50)
 Case 100:  lngColor = RGB(200, 200, 200)
 End Select
 p.Interior.Color = lngColor
 Next i
 End With

die Hilfespalte befindet sich in dem C4:C63 Bereich

Danke Uwe


Gruß Silvana
Member: colinardo
colinardo Jul 27, 2018 updated at 11:51:16 (UTC)
Goto Top
ch würde gerne an meinem Code Anpassungen finden. dein Code sagt mir leider nicht viel ....
Öhm, das ist dein Code, nur mit der entsprechenden Ergänzung ab Zeile 22, dort siehst du das jeder Eintrag des Charts mit einer ForEach Schleife durchlaufen wird und ihm die entsprechende Farbe aus der dazugehörigen Zelle in Spalte C zugewiesen wird.

Wenn man sich den Code nicht zumindest einmal grundlegend zu Gemüte führt wird das mit dir nie was. Sorry. Da liefert man es schon frei Haus und es ist noch immer nicht genug face-sad.

Bidde
CreateColoredChartFromData_381536.xlsm

Und tschüss.