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

Laufzeitfehler bei Daten zu Diagramm hinzufügen

Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 10:37:21
Lea
Hallo,
ich versuche schon seit einer gefühlten Ewigkeit per VBA Daten zu einer Datenreihe eines Diagramms hinzuzufügen und ich werde langsam wahnsinnig.
Nichts, aber auch gar nichts funktioniert, was mir das Internet ausspuckt.
Ich kriege gar nicht mehr alles zusammen, was ich schon ausprobiert habe. Übrig geblieben ist folgendes:

Dim DiaDaten As Range
Set DiaDaten = Worksheets("Tabelle1").Cells(1, Columns.Count).End(xlToLeft).Offset(1, 0)
Worksheets("Tabelle1").ChartObjects("Diagramm 8").Chart.SeriesCollection(1).Extend

Übrig bleibt ein Laufzeitfehler (1001) oder auch (438) oder zuletzt (5). Aber absolut keines hat mir diesen einen verfluchten Wert in die Datenreihe eingefügt :(

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 11:19:13
Beverly
Hi Lea,
weshalb weist du nicht einfach die X-Werte und/Oder Y-Werte neu zu, also ohne Extend?


AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 11:24:44
Lea
Das schwierige ist, dass die vorhandenen Werte nicht gerade besonders gut nebeneinander gereiht sind (das muss leider auch so sein). So sind die ersten 4 Werte in den Spalten Q, R, T, V. In meiner Auswertung kommt der nächste Wert in Spalte X. Und nun soll der Wert in Spalte X der Datenreihe zugefügt werden...
Wenn du eine andere Idee hast, gerne :) ich bin für jede Lösung dankbar :)

Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 11:55:14
Beverly
nach diesem Prinzip:
Sub DiaErweitern()
Dim rngBereich As Range
With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
.Values = Union(Range("Q1:T1"), Range("X1"))
End With
End Sub


AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 12:09:57
Lea
Danke erstmal für deine Hilfe :)
Das leuchtet mir ein, aber das Problem ist, dass das ganze daynamisch ist. Zwar ist der Wert, den ich der Datenreihe diesmal hinzufügen möchte in Spalte X aber beim nächsten mal in Spalte Z.
Deswegen habe ich .extend verwandt und dann über columns.count (gibt Spalte X aus) den letzten Wert genommen. In der "nächsten Runde" gehört X zu den schon vorhandenen Werten und Z ist der neue... (die Spalten sind bei mir Jahre, falls das beim Verständnis hilft)

Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 12:28:21
Beverly
Und wo ist das Problem, anstelle von Range("X1") die letzte Spalte in Zeile 1 zu verwenden? Anstelle von Range kann eine Zelladresse doch auch mit Cells(Zeile, Spalte) angegeben werden und wenn es mehrere Zellen sind, dann Range(Cells(Zeile, erste Spalte), Cells(Zeile, letzte Spalte))


AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 12:47:33
Lea
Da ist kein Problem. Ich möchte ja gerne die letzte Spalte verwenden.
Ich habe in den Spalten die Jahre 2008 bis 2012. Über einen Aktualisieren-Button soll nun die Aktualisierung des Diagramms erfolgen.
Wenn ich jetzt der Tabelle das Jahr 2013 hinzugefügt habe soll er ja die vorhandenen Daten weiter verwenden, nur eben den neuen hinzufügen.
Die Dynamik bereitet mir hier das Problem. klar kann ich die Werte starr in das Diagramm packen, aber dann muss ich ja den Quelltext jedes Jahr anpassen, wenn ich eine neue Spalte hinzufüge.
Ich müsste vielleicht wissen, wie ich entweder nur einen Datensatz zum bestehenden hinzufüge (deswegen der Versuch mit .extend), oder wie ich den Datensatz sammele (also quasi "wenn Zelle (x,y) leer, dann packe in Datensatz, next oder so).
Mir ist die korrekte syntax nicht bewusst, weil ich mit Diagrammen bisher nicht gearbeitet habe.
Also um es nochmal zu verdeutlichen. Gerne können jedes Mal die darzustellenden Daten neu gesammelt werden (ist vielleicht auch besser so). Um es ganz genau zu machen: Meine Werte Stehen in: Cells(4, 17);(4, 18);(4, 20);(4, 22);(4, 24);(...) wobei jede Koordinate für ein Jahr steht

Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
27.11.2013 13:48:34
Beverly
Niemand hat irgenwo irgendetwas erwähnt, die Werte fix ins Diagramm einzutragen - es war bisher immer nur die Rede von Range bzw. Cells, also Bereichen.
Da dir die Zellen bekannt sind, kannst du in einer Schleife über alle Zellen laufen, sie zu einem gemeinsamen Range mittels Union "zusammensammeln" und dann diesen Gesamtbereich der Datenreihe immer wieder neu zuweisen. Wie man einer Datenreihe einen Bereich zuweist, hatte ich ja schon gepostet, nur dass du in der betreffenden Codezeile anstelle Union( ) deine Variable für den Gesamtebereich setzen musst.


Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 11:11:27
Lea
kannst du mir auch sagen, wie ich eine variable Anzahl von Werten in einem Range mit Union() sammele? Mir ist die Syntax leider überhaupt nicht klar :(
Um mehrere Variablen in eine Variable (für den Range) zu bekommen, brauche ich doch ein Array oder?

AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 11:26:48
Beverly
Vom Prinzip her geht es so:
Set rngGesamt = Union(rngBereich1, rngBereich2)
Set rngGesamt = Union(rngGesamt, rngBereich3)
Set rngGesamt = Union(rngGesamt, rngBereich4)
usw.
Das musst du natürlich in einer Schleife realisieren.


Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 12:11:34
Lea
Ich habe es jetzt so programmiert

With Worksheets("Tabelle1")
Dim RngGesamt As Range
Set RngGesamt = .Cells(5, 17)
For i = 18 To 100 Step 2
If .Cells(5, i)  "" Then
RngGesamt = Union(RngGesamt, .Cells(5, i))
Else: Exit For
End If
Next i
.ChartObjects("Diagramm 8").Chart.SeriesCollection(1).Values = Range(RngGesamt)
End With
und es kommt Laufzeitfehler 1004 Anwendungs- oder objektdefinierter Fehler...
Ich glaube er sammelt die Variablen schon mal aber er will sie nicht ins Diagramm übertragen...

AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 12:21:29
Lea
Huch, ich weiß woran der Fehler liegt, da ist ein Range zu viel

With Worksheets("Tabelle1")
Dim RngGesamt As Range
Set RngGesamt = .Cells(5, 17)
For i = 18 To 100 Step 2
If .Cells(5, i)  "" Then
RngGesamt = Union(RngGesamt, .Cells(5, i))
Else: Exit For
End If
Next i
.ChartObjects("Diagramm 8").Chart.SeriesCollection(1).Values = RngGesamt
End With
Aber jetzt macht er in der Zeile

RngGesamt = Union(RngGesamt, .Cells(5, i))

auf einmal die Zelle in der ersten Runde der Schleife leer... warum das denn?

Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 12:21:50
Lea
Huch, ich weiß woran der Fehler liegt, da ist ein Range zu viel

With Worksheets("Tabelle1")
Dim RngGesamt As Range
Set RngGesamt = .Cells(5, 17)
For i = 18 To 100 Step 2
If .Cells(5, i)  "" Then
RngGesamt = Union(RngGesamt, .Cells(5, i))
Else: Exit For
End If
Next i
.ChartObjects("Diagramm 8").Chart.SeriesCollection(1).Values = RngGesamt
End With
Aber jetzt macht er in der Zeile

RngGesamt = Union(RngGesamt, .Cells(5, i))

auf einmal die Zelle in der ersten Runde der Schleife leer... warum das denn?

Anzeige
AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 12:36:08
Beverly
es muss heißen Set RngGesamt (siehe dazu meinen Code!)


AW: Laufzeitfehler bei Daten zu Diagramm hinzufügen
03.12.2013 12:30:46
Lea
endlich!!! ich habe es!!! Danke vielmals!

Dim RngGesamt As Range
Set RngGesamt = .Cells(5, 17)
For i = 18 To 100 Step 2
If .Cells(5, i)  "" Then
Set RngGesamt = Union(RngGesamt, .Cells(5, i))
Else: Exit For
End If
Next i
.ChartObjects("Diagramm 8").Chart.SeriesCollection(1).Values = RngGesamt
immer liegt es an so kleinigkeiten ;)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige