Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

Sekundärachse von Chart in UserForm skalieren

Sekundärachse von Chart in UserForm skalieren
23.04.2015 08:11:14
Chart
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

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

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

AW: Sekundärachse von Chart in UserForm skalieren
27.04.2015 13:40:53
Chart
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!

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

Anzeige
AW: Sekundärachse von Chart in UserForm skalieren
28.04.2015 11:01:13
Chart
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

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

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

AW: Sekundärachse von Chart in UserForm skalieren
28.04.2015 14:03:28
Chart
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

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

Anzeige
AW: Sekundärachse von Chart in UserForm skalieren
29.04.2015 13:11:33
Chart
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

Anzeige
AW: Sekundärachse von Chart in UserForm skalieren
04.05.2015 15:40:48
Chart
Super, vielen Dank!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige