Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA - Diagrammerstellung

Excel VBA - Diagrammerstellung
30.08.2021 17:04:29
Eike
Hallo,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - Diagrammerstellung
30.08.2021 17:10:55
Beverly
Hi Eike,
du weist deinen Datenreihen nur Y-Werte (Reihenwerte) zu - für ein Punkt-Diagramm fehlen jedoch die X-Werte.

GrußformelBeverly's Excel - Inn
AW: Excel VBA - Diagrammerstellung
31.08.2021 07:51:24
Eike
Hallo Karin,
danke für den Tipp, das Punktediagramm alleine bekomme ich nun hin. Nur wie bekomme ich das nun hin, dass ich den IST-Wert als Punktediagramm darstellen kann und den Rest als Liniendiagramm.
Verzweifle langsam :(
Vg
Eike
Anzeige
AW: Excel VBA - Diagrammerstellung
31.08.2021 11:29:33
Beverly
Hi Eike,
wozu? Alle Datenreihen können doch als Punkt-Diagramm dargestellt werden, nur musst du dafür den Diagramm-Untertyp "Punkte mit geraden Linien" verwenden - also anstelle xlXYScatter dieses: xlXYScatterLinesNoMarkers. Außerdem müssen die anderen Datenreihen ebenfalls (dieselben) X-Werte bekommen.

GrußformelBeverly's Excel - Inn
Anzeige
Ergänzung: Lösungsvorschlag
31.08.2021 12:50:40
Beverly
Hi Eike,
ich würde es so lösen:

Sub DiaErstellen()
Dim CH As Chart
Dim Lz As Long
Dim MIN, MAX As Double
Dim X_Bereich As Range
With Worksheets("Hauptseite")
Lz = .Cells(Rows.Count, 12).End(xlUp).Row
MIN = Application.MIN(.Range("L3:L" & Lz)) - 1
MAX = Application.MAX(.Range("L3:L" & Lz)) + 3
Set X_Bereich = .Range("M3:M" & Lz)
Set CH = .Shapes.AddChart2(240, xlXYScatterLinesNoMarkers, 0, 0, 0, 0).Chart
CH.SetSourceData Source:=.Range("L3:M3")
End With
CH.HasLegend = True
With CH.Parent
.Top = Rows(9).Top
.Left = 10
.Width = 450
.Height = Rows("10:30").Height
End With
With CH.SeriesCollection(1) 'IST-Wert
.XValues = X_Bereich
.Values = Worksheets("Hauptseite").Range("L3:L" & Lz)
.Border.Color = vbRed
.Name = "IST-WERTE"
End With
With CH.SeriesCollection.NewSeries 'soll
.XValues = X_Bereich
.Values = Worksheets("Hauptseite").Range("V3:V" & Lz)
.Border.Color = vbBlue
.Name = "Soll"
End With
With CH.SeriesCollection.NewSeries 'UGW
.XValues = X_Bereich
.Values = Worksheets("Hauptseite").Range("W3:W" & Lz)
.Border.Color = vbGreen
.Name = "UGW"
End With
With CH.SeriesCollection.NewSeries 'ogw
.XValues = X_Bereich
.Values = Worksheets("Hauptseite").Range("X3:X" & Lz)
.Border.Color = vbYellow
.Name = "OGW"
End With
With CH.Axes(xlValue)
.HasTitle = True
.AxisTitle.Text = "IST-Werte"
.MinimumScale = MIN
.MaximumScale = MAX
.TickLabels.NumberFormat = "#.##0,000"
End With
With CH.Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "Menge"
.MinimumScale = 0
.MajorGridlines.Format.Line.Visible = msoFalse
.MajorTickMark = xlOutside
End With
End Sub

GrußformelBeverly's Excel - Inn
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige