Excel VBA - Diagrammerstellung
30.08.2021 17:04:29
Eike
ich bin gerade dabei eine Vorlage für eine grafische Prozessfähigkeitsanalyse zu programmieren. Das soll per Makro geschehen.
Für das Histogramm soll ein Diagramm erstellt werden, welches die Werte MIN / MAX und den Mittelwert als Liniendiagramm mit festdefinierten Farben darstellt. Der IST-Wert soll als Punkte Diagramm, nicht mit Linien verbunden, dargestellt werden.
Ich bekomme es jedoch nicht hin, dies zu realisieren. Die definierten Farben klappen, aber es werden nur Liniendiagrame erzeugt. Was mache ich verkehrt?
https://www.herber.de/bbs/user/147838.xlsm
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
Set Bereich = Sheet2.Range("l3:l" & Lz) 'Auslesen der befüllten Zellen
MIN = Application.WorksheetFunction.MIN(Bereich) - 1
MAX = Application.WorksheetFunction.MAX(Bereich) + 3
With CH.SeriesCollection(1) 'IST-Wert
CH.ChartType = xlXYScatter
.Border.Color = vbRed
'.MarkerStyle = xlMarkerStyleCircle
'.MarkerBackgroundColor = vbRed
'.MarkerForegroundColor = vbRed
End With
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("V3:V" & Lz) 'soll
With CH.SeriesCollection(2) 'soll
CH.HasLegend = True
CH.ChartType = xlLine
.Border.Color = vbBlue
.MarkerStyle = xlMarkerStyleNone
.MarkerBackgroundColor = vbBlue
.MarkerForegroundColor = vbBlue
End With
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("W3:W" & Lz) 'UGW
With CH.SeriesCollection(3) 'UGW
CH.ChartType = xlLine
.Border.Color = vbGreen
.MarkerStyle = xlMarkerStyleNone
.MarkerBackgroundColor = vbGreen
.MarkerForegroundColor = vbGreen
End With
CH.SeriesCollection.Add Source:=Worksheets("Hauptseite").Range("x3:x" & Lz) 'ogw
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
Freue mich über eure Lösungen.Vg
Eike