VBA - X-Achse bei Balken und Liniendiagramm
26.08.2016 19:07:53
AHK
ich habe ein Problem mit der Erstellung eines eingebetteten Diagramms.
Darin sollen Messwerte (in Tabellenspalte "D") als Histogramm (Säulendiagramm) dargestellt werden, die Summenwerte (in Tabellenspalte "C") als Liniendiagramm.
Hierfür weise ich den beiden Datenquellen per VBA eine unterschiedliche X-Achse zu.
Das klappt auch prima. Bis ich mit .SeriesCollection(2).ChartType = xlColumnClustered das Säulendiagramm zuweise. Dann verschiebt sich die X-Achse.
Ich habe versucht die Skalierung der zweiten X-Achse der primären X-Achse gleichzusetzen, bekomme bei einer Codezeile à la .Axes(xlCategory, xlSecondary).MinimumScale = 100 aber eine Fehlermeldung.
Wie bekomme ich bei unterschiedlichen Diagrammtypen eine einheitliche X-Achse mit VBA hin ?
Ich würde mich riesig über Unterstützung freuen. Habe die Exceltabelle (ohne Makro) angefügt.
https://www.herber.de/bbs/user/107858.xlsx
Viele Grüße,
AHK
Der Makro-Code ist wie folgt:
Sub Makro1()
' Erstellen des Verteilungsdiagramms
Dim co As ChartObject
Dim r As Range
Set r = Range("F10:M18")
Set co = ActiveSheet.ChartObjects.Add(r.Left, r.Top, r.Width, r.height)
co.Name = "histDiag"
With co.Chart
.HasTitle = True
.ChartTitle.Text = "Auswertung"
.SeriesCollection.NewSeries
.SeriesCollection(1).ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection(1).Name = "=Test!$C$10"
.SeriesCollection(1).Values = "=Test!$C$11:$C$112"
.SeriesCollection(1).XValues = "=Test!$B$11:$B$112"
.HasAxis(xlValue, xlPrimary) = True
.HasAxis(xlCategory, xlPrimary) = True
.Axes(xlCategory, xlPrimary).MinimumScale = 100
.Axes(xlCategory, xlPrimary).MaximumScale = 2000
.Axes(xlCategory, xlPrimary).MajorUnit = 500
.Axes(xlCategory, xlPrimary).MinorUnit = 100
.Axes(xlCategory, xlPrimary).CrossesAt = 0
.SeriesCollection.NewSeries
.SeriesCollection(2).Name = "=Test!$D$10"
.SeriesCollection(2).Values = "=Test!$D$11:$D$112"
.SeriesCollection(2).XValues = "=Test!$B$11:$B$112"
.SeriesCollection(2).AxisGroup = 2
.SeriesCollection(2).ChartType = xlColumnClustered
.HasAxis(xlValue, xlSecondary) = True
.HasAxis(xlCategory, xlSecondary) = True
End With
End Sub