Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige