AW: Problem bei Diagrammerstellung
18.05.2024 10:42:04
reiner
Hallo,
hier mal zur Verdeutlichung ein Auszug aus dem einwandfrei funktionierenden Programmcode der den Datenreihen in den Diagrammformen: 2D-Balken, 3D-Säulen und 3D-Linien die gewünschte Farbe zuweist.:
Set Wks = Worksheets("Stromverbrauch " & Jahr)
With Wks
.Unprotect
' Diagramm(e) vorhanden dann alle löschen
If .ChartObjects.Count > 0 Then .ChartObjects.Delete
frmDiagramm.cmdDiagrammEin.Enabled = False
' Diagramm hinzufügen mit den Dimensionen 0
Set Dia = .ChartObjects.Add(0, 0, 0, 0)
With Dia
' Schleife über alle Einträge im Array
For intReihe = 0 To UBound(arrReihen())
' neue Datenreihe erstellen
With .Chart.SeriesCollection.NewSeries
' Name aus Zeile 3, Spaltennummer aus Array
.Name = Wks.Cells(3, arrReihen(intReihe))
' Wertebereich zuweisen, Spaltennummer aus Array
With .Interior
If Wks.Cells(3, arrReihen(intReihe)) = "Verbrauch" Then .ColorIndex = 56 ' Verbrauch - Spalte "C" https://www.automateexcel.com/de/vba/colorindex-codeliste-rgb-farben/
If Wks.Cells(3, arrReihen(intReihe)) = "Netzbezug" Then .ColorIndex = 3 ' Netzbezug - Spalte "D"
If Wks.Cells(3, arrReihen(intReihe)) = "Eigenversorg." Then .ColorIndex = 43 ' Eigenversorgung -Spalte "E"
If Wks.Cells(3, arrReihen(intReihe)) = "PV-Erzeugung" Then .ColorIndex = 40 ' PV-Erzeugung - Spalte "F"
If Wks.Cells(3, arrReihen(intReihe)) = "Netzeinspeisung" Then .ColorIndex = 29 'Netzeinspung -Spalte "G"
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If Wks.Cells(3, arrReihen(intReihe)) = "CO2-Reduktion" Then .ColorIndex = 37 'CO2-Reduktion - Spalte"H"
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
If Wks.Cells(3, arrReihen(intReihe)) = "Einspeise-vergütung" Then .ColorIndex = 29 ' Vergütung - Spalte "I"
If Wks.Cells(3, arrReihen(intReihe)) = "Netzbezug" Then .ColorIndex = 3 ' Netzbezug - Spalte "J"
If Wks.Cells(3, arrReihen(intReihe)) = "Eigenversorgung" Then .ColorIndex = 43 ' Eigenversorgung - Spalte "K"
If Wks.Cells(3, arrReihen(intReihe)) = "PV-Ertrag" Then .ColorIndex = 6 ' PV-Ertrag Spalte L"
If Wks.Cells(3, arrReihen(intReihe)) = "Strom-Einkauf" Then .ColorIndex = 35 ' Strom - Einkauf - Spalte "M"
If Wks.Cells(3, arrReihen(intReihe)) = "Strom-Einsparung" Then .ColorIndex = 5 ' Strom-Einsparung - Spalte "N"
Umläufe = Umläufe + 1
End With
Diese Farbzuweisung wird bei Anwahl der Diagrammform 2DLinie jedoch NICHT akzeptiert.
Ein paar Zeilen tiefer im Programmcode habe ich versucht den Datenreihen (2DLinien-Diagramm) eine Farbe zuzuweisen, allerdings ohne Erfolg. Es ist jedoch möglich den Datenreihen eine Linienstärke zuzuweisen (aber leider keine Farbe)
If frmDiagramm.opt3Dia.Value = True Then
var = 0 'Linienstärke anpassen nur bei "2D-Linien-Diagramm
For var = 1 To intZaehler
.Chart.SeriesCollection(var).Select
With Selection.Format.Line
.Weight = 5
.ForeColor.RGB = RGB(255, 255, 0)
End With
Next
End If
End With
Warum hat die Farbzuweisung mit .ForeColor.RGB = RGB(255, 255, 0)
keine Auswirkung?
reiner