Sekundärachse von Chart in UserForm skalieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label
Bild

Betrifft: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 23.04.2015 08:11:14

Hallo Leute,
habe folgendes Problem: Ich habe eine Userform erstellt, in der u.a. ein Diagramm enthalten sein soll. Das Diagramm enthält 2 Datenreihen und wurde über das ChartSpace-Tool erstellt. Dateinreihe 1 des Diagramms soll sich auf die primäre y-Achse beziehen, Datenreihe 2 auf die sekundäre y-Achse. Ich konnte soweit auch alles erstellen, Diagramm, zugehörige Datenreihen, primäre und sekundäre y-Achse. Jedoch übernimmt das Diagramm für beiden y-Achsen immer die zuletzt definierte Skalierung (Hier: min=20, max=60).
Kann mir bei diesem Problem jemand weiterhelfen und mir sagen, wie ich die Skalierungen unabhängig voneinander mache und die Datenreiehen der jeweiligen y-Achse zuordne?
Vielen Dank schon einmal für Eure Hilfe!
Noch eine Anmerkung: Bin kein VBA-Spezialist, komme aber normalerweise ganz gut und für meine Zwecke ausreichend damit zurecht.
Grüße

Unten der bisherige Code. x, y1 und y2 wurden vorher erstellt.
----------------------------
'Erstellen des Diagramms in ChartSpace

'Create a new chart and Dim
Dim chart1
Dim yAxisPrimary
Dim xAxisPrimary

ChartSpace1.Clear
ChartSpace1.Refresh

Set chart1 = ChartSpace1.Charts.Add

'Add a series to the chart with the x-values and y-values
Dim series1
Set series1 = chart1.SeriesCollection.Add
With series1
.Type = 25
.Caption = "Datenreihe 1"
.SetData chDimXValues, -1, x
.SetData chDimYValues, -1, y1
.Line.Color = RGB(0, 0, 255)
End With

Dim series2
Set series2 = chart1.SeriesCollection.Add
With series2
.Type = 25
.Caption = "Datenreihe 2"
.SetData chDimXValues, -1, x
.SetData chDimYValues, -1, y2
.Line.Color = RGB(255, 0, 0)
End With

'Definition of y-axis and x-axis -------------------------------

Set xAxisPrimary = chart1.Axes(1)
Set yAxisPrimary = chart1.Axes(0)

x_max = x(n_cells)

With xAxisPrimary
.Position = chAxisPositionBottom
.Scaling.Minimum = 0
.Scaling.Maximum = x_max + 0.5
.NumberFormat = "0.0"
.HasTitle = True
.Title.Caption = "x-Werte"
End With

With yAxisPrimary
.Position = chAxisPositionLeft
.Scaling.Minimum = 0
.Scaling.Maximum = 10
.HasTitle = True
.Title.Caption = "y1-Werte"
.NumberFormat = "0.0"
End With

'Add another series to the chart with the x-values and y-values


'Add 2nd y-axis --------------------------------------------
chart1.Axes.Add chart1.Axes(0).Scaling

Dim yAxisSecondary
Set yAxisSecondary = chart1.Axes(2)

With yAxisSecondary
.Position = chAxisPositionRight
.Scaling.Minimum = 20
.Scaling.Maximum = 60
.HasTitle = True
.Title.Caption = "y2-Werte"
.NumberFormat = "0"
End With

'Show the legend at the top of the chart
chart1.HasLegend = True
chart1.Legend.Position = chLegendPositionTop

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: Nepumuk
Geschrieben am: 23.04.2015 10:58:47
Hallo,
das Zauberwort lautet "Ungroup". Hier findest du ein Beispiel:
https://support.microsoft.com/de-de/kb/286211
Gruß
Nepumuk

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 23.04.2015 13:37:54
Vielen Dank! Hat funktioniert!

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 27.04.2015 13:40:53
Hallo nochmal,
erhält die zweite Datenmenge durch den Ungroup-Befehl auch eine zweite (anders skalierte) x-Achse? In meinem Diagramm werden die 2 Datenreihen unterschiedlich lang dargestellt, obwohl beide Datenreihen exakt gleich viele Elemente besitzen.
Danke schon mal!

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: Nepumuk
Geschrieben am: 27.04.2015 16:23:01
Hallo,
eigentlich nicht. Kannst du mal eine Mustermappe hochladen?
Gruß
Nepumuk

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 28.04.2015 11:01:13
Hallo,
das mit der Mustermappe könnte schwierig werden, da das Programm mit 3 UserForms schon recht umfangreich ist und ich den eigentlichen Inhalt aus Geheimhaltungs-Gründen komplett abändern müsste. Aber ganz unten noch einmal der aktuelle Code zur Erstellung des Diagramms, bei dem die unterschiedlich skalierten Kurven auftauchen. Ich hoffe der Code-Schnipsel reicht aus, um mein Problem zu lösen.
Danke!
Grüße HYDInch
----------------------
Dim chart1
Dim const1
Dim yAxisPrimary
Dim xAxisPrimary

UserForm1.ChartSpace1.Clear
UserForm1.ChartSpace1.Refresh

Set const1 = UserForm1.ChartSpace1.Constants
Set chart1 = UserForm1.ChartSpace1.Charts.Add

Dim series1
Set series1 = chart1.SeriesCollection.Add
With series1
.Type = 25
.Caption = "Datenreihe 1"
.SetData chDimXValues, -1, x
.SetData chDimYValues, -1, y1
.Line.Color = RGB(0, 0, 255)
End With
Dim series2
Set series2 = chart1.SeriesCollection.Add
With series2
.Type = 25
.Caption = "Datenreihe 2"
.SetData chDimXValues, -1, x
.SetData chDimYValues, -1, y2
.Line.Color = RGB(255, 0, 0)
'.LayerIndex = 0
End With

'Definition of y-axis and x-axis -------------------------------

Set xAxisPrimary = chart1.Axes(1)
Set yAxisPrimary = chart1.Axes(0)

With yAxisPrimary
.Position = chAxisPositionLeft
.Scaling.Minimum = y1min
.Scaling.Maximum = y1max
.HasTitle = True
.Title.Caption = "y1"
.NumberFormat = "0.00"
.Font.Color = RGB(0, 0, 255)
.Title.Font.Color = RGB(0, 0, 255)
.MajorUnit = (y1max - y1min) / 10
End With

series2.Ungroup True


Dim yAxisSecondary
Set yAxisSecondary = chart1.Axes.Add(series2.Scalings(const1.chDimYValues))

With yAxisSecondary
.Position = chAxisPositionRight
.Scaling.Minimum = y2min
.Scaling.Maximum = y2max
.HasTitle = True
.Title.Caption = "y2"
.NumberFormat = "0.0"
.Font.Color = RGB(255, 0, 0)
.Title.Font.Color = RGB(255, 0, 0)
.MajorUnit = (y2max - y2min) / 10
End With

With xAxisPrimary
.Position = chAxisPositionBottom
.Scaling.Minimum = xmin
.Scaling.Maximum = xmax
.NumberFormat = "0.0"
.HasTitle = True
.Title.Caption = "x"
End With


'Show the legend at the top of the chart
chart1.HasLegend = True
chart1.Legend.Position = chLegendPositionTop



Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: Nepumuk
Geschrieben am: 28.04.2015 11:41:13
Hallo,
du sollst nicht die Mappe sondern ein Muster hochladen. Ich will deine Datei nicht nachbauen.
Gruß
Nepumuk

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 28.04.2015 13:49:11
Was genau verstehst du unter Mustermappe? Ich gehe mal davon aus, dass diese Mappe den prinzipiellen Code enthalten soll, jedoch mit unterschiedlichen Bezeichnungen, oder?

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: Nepumuk
Geschrieben am: 28.04.2015 14:03:28
Hallo,
eine Mappe mit einem UserForm und ein paar Fantasiedaten mit denen der der Effekt auftritt. Ich kann das nämlich bei mir nicht nachvollziehen.
Gruß
Nepumuk

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 29.04.2015 08:39:54
Hi,
anbei der Link zur Mustermappe.
https://www.herber.de/bbs/user/97357.xlsm
Gruß HYDInch

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: Nepumuk
Geschrieben am: 29.04.2015 13:11:33
Hallo,
so wie es aussieht, wird tatsächlich eine sekundäre X-Achse erzeugt. Also:

Dim xAxisSecondary
Set xAxisSecondary = chart1.Axes.Add(series2.Scalings(const1.chDimXValues))
With xAxisSecondary
    .Position = chAxisPositionTop
    .HasTitle = False
    .HasTickLabels = False
End With

Gruß
Nepumuk

Bild

Betrifft: AW: Sekundärachse von Chart in UserForm skalieren
von: HYDInch
Geschrieben am: 04.05.2015 15:40:48
Super, vielen Dank!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Sekundärachse von Chart in UserForm skalieren"