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

VBA XY Diagramm mit dyn. Zeilenende

VBA XY Diagramm mit dyn. Zeilenende
25.01.2021 19:07:14
Marvin
Hallo zusammen,
Ich sitze jetzt schon mehrere Stunden an diesem Problem und habe noch mehr Stunden damit verbracht, das Forum durchzusuchen.
Vielleicht hat von Euch jemand Lust, mir mal auf die Sprünge zu helfen...
Ich habe ein "Messdaten" Registerblatt, welches ich über Makros importiere und die endgültigen Werte berechne.
Über ein Makro Diagramm1Erstellen möchte ich jetzt ein X-Y Diagramm erstellen mit den dynamischen Daten der Spalte B und D. Dabei ist Spalte B die X-Achse und Spalte D die Y-Achse.
Ich entschuldige mich im Voraus für dieses banale Problem
Gruß Marvin.
Sub Diagramm1Erstellen()
Application.ScreenUpdating = False
Dim Ende As Variant
Sheets("Messdaten").Select
Ende = Cells(Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Charts.Add Before:=Worksheets("Messdaten")
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=Sheets("Messdaten").Range("A2:D" & Ende), PlotBy:= _
xlColumns
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = "='Messdaten'!R2C2:R" & Ende & "C2"
.SeriesCollection(1).Values = "='Messdaten'!R2C4:R" & Ende & "C4"
.SeriesCollection(1).Name = "Kraft zu Geschwindigkeit"
End With
Application.ScreenUpdating = True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: VBA XY Diagramm mit dyn. Zeilenende
25.01.2021 20:49:26
onur
Verstehe dein Problem nicht - Ein Punkt (X-Y) Diagramm ist immer dýnamisch.
Nimm einfach einen grösseren Bereich. Wenn die unteren Zellen leer sind, werden sie einfach ignoriert.
AW: VBA XY Diagramm mit dyn. Zeilenende
25.01.2021 20:55:20
fcs
Hallo Marvin,
ich habe dein Makro angepasst.
Das Problem ist, dass Excel basierend auf den Daten erst einmal ein Diagramm mit mehr Datenreihen erstellt. Hier müssen zunächst die überzähligen Datenreihen gelöscht werden, bevor für die eine gewünschte Datenreihe die Daten zugewiesen werden können.
LG
Franz
Sub Diagramm1Erstellen()
Application.ScreenUpdating = False
Dim Ende As Variant, iSerie As Integer, objSerie As Series
Sheets("Messdaten").Select
Ende = Cells(Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Charts.Add Before:=Worksheets("Messdaten")
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=Sheets("Messdaten").Range("A2:D" & Ende), PlotBy:= _
xlColumns
'überzählige Datenreihen löschen
For Each objSerie In .SeriesCollection
iSerie = iSerie + 1
If iSerie > 1 Then
objSerie.Delete
End If
Next
.SeriesCollection(1).XValues = "='Messdaten'!R2C2:R" & Ende & "C2"
.SeriesCollection(1).Values = "='Messdaten'!R2C4:R" & Ende & "C4"
.SeriesCollection(1).Name = "Kraft zu Geschwindigkeit"
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA XY Diagramm mit dyn. Zeilenende
25.01.2021 21:37:05
Marvin
Hallo Franz,
vielen Dank für deine Erklärung und dem Code!
Jetzt ergibt das auch Sinn :-)
Schöne Grüße Marvin
AW: VBA XY Diagramm mit dyn. Zeilenende
26.01.2021 10:58:15
Beverly
Hi Marvin,
in deinem Code gibst du als Datequelle den Bereich der Spalten A bis D an - dadurch hat das Diagramm mehr als 1 Datenreihe. Du kannst beim Erstellen aber bereits vorgeben, dass nur 1 Datenreihe integriert wird, der du dann nur noch den Bereich der X- und der Y-Werte zuzuweisen brauchst:
Sub DiaErstellen()
Dim Ende As Long
With Worksheets("Messdaten")
Ende = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
ThisWorkbook.Charts.Add Before:=Worksheets("Messdaten")
With Charts(Charts.Count)
.ChartType = xlXYScatter
' Datenbereich auf 1 Zelle (z.B. A1) begrenzen damit maximal 1 Datenreihe erstellt wird
.SetSourceData Source:=Worksheets("Messdaten").Range("A1"), PlotBy:=xlColumns
' falls diese Zelle leer ist muss erst 1 Datenreihe erstellt werden
If .SeriesCollection.Count = 0 Then .SeriesCollection.NewSeries
With .SeriesCollection(1)
.Name = "Kraft zu Geschwindigkeit"
.XValues = Worksheets("Messdaten").Range("B2:B" & Ende)
.Values = Worksheets("Messdaten").Range("D2:D" & Ende)
End With
End With
End Sub


Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige