Excel VBA - Diagrammerstellung
11.08.2021 17:11:25
Eike
ich habe zwei klein kleine Probleme mit meinem VBA Code.
1. Problem
Ich möchte ein Histogramm darstellen. Die Linien werden mir alle angezeigt, jedoch nicht in der Form, wie ich es gerne hätte, bis auf die Farbe :(
Was möchte ich dargestellt bekommen
IST-Wert Punkt-Diagramm
SOLL/ UGW/OGW Liniendiagramm
2. Problem
Wie kann ich dem Diagramm einen eindeutigen Namen geben? Ich möchte zukünftig prüfen, ob es Diagramm schon gibt, wenn es der Fall es, würde ich es löschen wollen.
Sub D123()
' Diagramm Macro
Dim CO As ChartObject
Dim CH As Chart
Dim I As Variant
Dim IST As Variant
Dim UGW As Variant
Dim Lz
Dim MIN, MAX As Long
Dim Bereich As Range
Set CO = ThisWorkbook.Worksheets("Hauptseite"). _
ChartObjects.Add(200, 10, 800, 450)
Set CH = CO.Chart
'ActiveSheet.Shapes.AddChart.Name = "MeinName"
Lz = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("l3:l" & Lz) 'ist
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("V3:V" & Lz) 'soll
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("W3:W" & Lz) 'UGW
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("x3:x" & Lz) 'ogw
Set Bereich = Sheet2.Range("l3:l" & Lz) 'Auslesen der befüllten Zellen
MIN = Application.WorksheetFunction.MIN(Bereich) - 1
MAX = Application.WorksheetFunction.MAX(Bereich) + 1
With CH.SeriesCollection(1) 'IST-Wert
CH.ChartType = xlXYScatter
.Border.Color = vbRed
'.MarkerStyle = xlMarkerStyleCircle
'.MarkerBackgroundColor = vbRed
'.MarkerForegroundColor = vbRed
End With
With CH.SeriesCollection(2) 'soll
CH.HasLegend = True
CH.ChartType = xlLine
.Border.Color = vbBlue
.MarkerStyle = xlMarkerStyleNone
.MarkerBackgroundColor = vbBlue
.MarkerForegroundColor = vbBlue
End With
With CH.SeriesCollection(3) 'UGW
CH.ChartType = xlLine
.Border.Color = vbGreen
.MarkerStyle = xlMarkerStyleNone
.MarkerBackgroundColor = vbGreen
.MarkerForegroundColor = vbGreen
End With
With CH.SeriesCollection(4) 'ogw
CH.ChartType = xlLine
.Border.Color = vbYellow
.MarkerStyle = xlMarkerStyleNone
.MarkerBackgroundColor = vbYellow
.MarkerForegroundColor = vbYellow
End With
With CH.Axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "IST-Werte"
.MinimumScale = MIN
.MaximumScale = MAX
End With
With CH.Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "Menge"
End With
With CH 'Legendenbezeichnung
.SeriesCollection(1).Name = "IST-WERTE"
.SeriesCollection(2).Name = "Soll"
.SeriesCollection(3).Name = "UWG"
.SeriesCollection(4).Name = "OGW"
End With
End Sub
Schon mal vielen Dank für eure Hilfe.