Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Diagramm mit variabler Zeilenanzahl

Diagramm mit variabler Zeilenanzahl
11.09.2013 11:13:12
Robin
Hallo,
ich möchte ein x,y-Diagramm aus den Zellen A5:A3005,C5:C3005 erstellen. Die Anzahl der Zeilen, die in diesem Bereich belegt sind, sind immer variabel. Es können also mal 200, mal 400 und bis max. zu 3000 Werte vorhanden sein.
Ich würde das Diagramm gerne von einem Makro erstellen lassen, bekomme es aber nicht so richtig hin. Habe etwas aufgezeichnet, aber 2 Probleme.
Zum einen bekomme ich bei wiederholter Ausführung den Laufzeitfehler 1004 "Anwendungs- oder objektdefinierter Fehler". Beim Debuggen wird als Fehlerzeile Folgendes angezeigt: "ActiveSheet.Shapes.AddChart.Select"
Mein Code sieht folgendermaßen aus:
Sub Diagramm()
' Diagramm Makro
Sheets("Diagramm").Select
Range("A5").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A5:A3005,C5:C3005").Select
Range("C5").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Range( _
"Diagramm!$A$5:$A$3005;Diagramm!$C$5:$C$3005")
ActiveChart.Legend.Select
Selection.Delete
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
Selection.Caption = "Zeitintervall [s]"
Selection.Format.TextFrame2.TextRange.Font.Size = 12
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated)
Selection.Caption = "Fehlmasse [mg]"
Selection.Format.TextFrame2.TextRange.Font.Size = 12
End Sub

Das andere Problem ist Folgendes:
Wie oben erwähnt, sind nicht alle Zeilen im Bereich von 5 bis 3005 belegt. Wenn ich alles einfach markiere, dann zerschießt sich die Acheneinteilung und es wird nonsens angezeigt. Deshalb soll das Makro bewirken, dass nur die Zellen, in denen auch wirklich was steht zur Erstellung des Diagramms herangezogen werden.
Ich verzweifle hier echt...
Vielen Dank für Hilfe und viele Grüße
Robin
Die Beispieldatei findet sich hier:
https://www.herber.de/bbs/user/87245.xlsm

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Diagramm mit variabler Zeilenanzahl
11.09.2013 18:04:32
fcs
Hallo Robin,
irgendwie funktioniert der aufgezeichnete Code für das Einfügen von Chart-Objekten nicht.
Ich bin deshalb den Umweg über Einfügen eines Diagrammblattes gegangen und verschiebe dann das Blatt als Objekt in das Tabellenblattt.
Gruß
Franz
Sub MakeDiagramm()
' MakeDiagramm Makro
Dim objChart As Chart, objAxis As Axis, objAxisTitle As AxisTitle, Zeile As Long
With Sheets("Diagramm")
.Select
'vorhandene Diagramme löschen
Do Until .ChartObjects.Count = 0
.ChartObjects(.ChartObjects.Count).Delete
Loop
'letzte Zeile ungleich Leerstring ermitteln
For Zeile = 5 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Trim(.Cells(Zeile, 1)) = "" Then Exit For
Next Zeile
End With
Range("A5:A8,C5:C8").Select
Charts.Add 'Chart als neues Blatt einfügen
Set objChart = ActiveChart
objChart.ChartType = xlXYScatter
objChart.SetSourceData Source:=Range( _
"Diagramm!$A$5:$A$" & Zeile & ",Diagramm!$C$5:$C$" & Zeile)
'Chart auf das Diagrammblatt verschieben
objChart.Location 2, "Diagramm"
Set objChart = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
With Sheets("Diagramm")
.Shapes(.ChartObjects(.ChartObjects.Count).Name).Top = .Range("E3").Top
.Shapes(.ChartObjects(.ChartObjects.Count).Name).Left = .Range("E3").Left
End With
With objChart
.Legend.Delete
'X-Achse
Set objAxis = .Axes(xlCategory)
objAxis.HasTitle = True
Set objAxisTitle = objAxis.AxisTitle
With objAxisTitle.Format.TextFrame2.TextRange
.Font.Size = 12
.Text = "Zeitachse [s]"
End With
'Y-Achse
Set objAxis = .Axes(xlValue)
objAxis.HasTitle = True
Set objAxisTitle = objAxis.AxisTitle
With objAxisTitle
.Orientation = xlHorizontal 'xlUpward
With .Format.TextFrame2.TextRange
.Font.Size = 12
.Text = "Fehlmenge [mg]"
End With
End With
End With
End Sub

Anzeige
AW: Diagramm mit variabler Zeilenanzahl
12.09.2013 11:49:07
Robin
Hallo Franz,
vielen lieben Dank erstmal; das klappt super!!! Das einzig Komische ist, dass das Diagramm die erste, in der keine Werte mehr vorhanden sind, ebenfalls als Datenquelle mit aufnimmt. Weißt du woran das liegen könnte, bzw. wie das zu verhindern ist?
Viele Grüße
Robin

Anzeige
AW: Diagramm mit variabler Zeilenanzahl
13.09.2013 02:06:18
fcs
Hallo Robin,
da hab ich übersehen, dass das Makro eins zu weit prüft.
Ergänze in folgendem Abschnitt noch eine Zeile.
      'letzte Zeile ungleich Leerstring ermitteln
For Zeile = 5 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Trim(.Cells(Zeile, 1)) = "" Then Exit For
Next Zeile
Zeile = Zeile -1                          'Neue Zeile

Gruß
Franz

Anzeige
AW: Diagramm mit variabler Zeilenanzahl
13.09.2013 16:48:18
Robin
Jetzt klappt es perfekt!
Vielen lieben Dank für die gute und schnelle Hilfe!
Viele Grüße
Robin
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige