Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SeriesCollection in Chart per VBA ansprechen

SeriesCollection in Chart per VBA ansprechen
26.07.2007 10:55:00
Jörg
Hallo!
Folgendes Problem: ich habe eine Excel-Datei, die aus einer Tabelle als Datenquelle "Worksheets(1)" sowie in einem separaten Sheet als Diagramm "Charts(1)" besteht.
Nun moechte ich per VBA den Datenbereich in der Datenquelle und somit auch im Diagramm erweitern (kein neues Diagramm!). Entsprechend muessen auch die XValues bzw. die Namen der Datenreihen umbenannt bzw. erweitert werden.
Ueber die Makro-Aufzeichnung bekomme ich das klassische
ActiveChart.SeriesCollection(1).XValue = blablabla
Wenn ich das nun 1:1 in mein Sub uebernehme, kommt der Laufzeitfehler 1004 "XValue-Eigenschaft des Series-Objektes kann nicht festgelegt werden".
Da selbst das schon nicht hinhaut, brauche ich mit meiner eigentlich gewollten For-Schleife
For i=1 to Anzahl_Reihen
Charts(1).SeriesCollection(i).Name = "Hallo " & i
Next
gar nicht erst kommen. Woran liegt's, wie kann ich die SeriesCollection(xy) in meinem Charts(1) ansprechen wenn nicht so?
Danke und Gruss
Joerg

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 11:07:00
Beverly
Hi Joerg,
ich weiß leider nicht, wei dein "blablalba" aussieht, sodass ich nur fragen kann, ob darin die R1C1-Schreibweise vorkommt:
Charts(1).SeriesCollection(i).XValues = "=Tabelle1!R1C2:R20C2"
________________________________________

AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 11:17:31
Jörg
Hi Karin,
ja, darauf habe ich geachtet:
Charts(i).SeriesCollection(j).XValues = "='Messwerte " & i & "'!R2C2:R" & Summe_x + 1 & "C2"
Ich zaehle in zwei Schlefen i und j hoch (beide beginnen bei 1 und existieren somit). Ich habe auch schon das blablabla (in Prosa ='Messwerte 1'!R2C2:R58C2") vorher an eine Variable "Wert" (entspricht dann dem Inhalt der Klammer) uebergeben und die dann eingesetzt - nichts! Auch die Apostoph hatte ich schon gestrichen. Wie gesagt, ich scheiter ja schon bei der Uebernahme des Original-Teils aus dem Makro mit "ActiveSheet".
Mach' doch mal ein einfaches Diagramm a la 3 Reihen und 3 Spalten und und gib' im Wertebereich fuer die x-Werte nur 2 Reihen an. Nun versuch' es auf 3 Reihenzu erweitern. Das duerfte meines Wissens ja nicht mehr ueber "ActiveSheet" laufen, es sei denn Du wendest vorher "Select" oder "Activate" an - auch das habe ich schon durch.
Also ich scheitere an der Lapalie grandios, aus welchem Grund auch immer...
Gruss
Joerg
Ich habe schon ueberall gefeilt

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 11:41:05
Beverly
Hi Joerg,
hast du mittels NewSeries schon eine neue Datenreihe hinzugefügt? Wenn es ein zusammenhängender Datenbereich ist, dann kannst du das auch über Charts(1).SetSourceData Source:=Worksheets("Tabelle1").Range("A1:C3") den Datenbereich insgesamt erweitern und anschließend in der Schleife den Namen vergeben.
Zu dynamischen Diagrammen mittels VBA schau mal auf meine HP, Seite "Diagramme m. VBA", dort findest du das Beispiel Dynamischer Datenbereich. Das betrifft zwar ein in die Tabelle eingebettetes Diagrammobjekt, funktioniert aber genau so mit einem Diagrammblatt (nur darf dann das Diagramm nicht als Objekt sondern muss direkt mit dem Nanem angesprochen werden).
Bis später,
Karin

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 13:06:40
Jörg
Hallo Karin,
hab mal geschaut, ist aber glaube ich nicht das, was ich will. Ich habe mal eine Datei erstellt und hochgeladen. Schau mal in den Code, das Problem habe ich oben ja bereits beschrieben:
https://www.herber.de/bbs/user/44463.xls
Bereits beim Einlesen von "Messwerte 1" wirft er den Fehler aus. Das Ziel ist, wenn "Messwerte 1" mal laeuft, es durch "Messwerte 2" zu ersetzen und das Diagramm "Diagramm 1" mit allen x- und y-Werten samt Beschriftung zu aktualisieren.
Gruss
Joerg

AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 13:56:23
Beverly
Hi Joerg,
das sollte eigentlich mit diesem Code, so wie ich schon geschrieben habe, mit Source funktioneren

Sub dia_aktualisieren()
Dim inReihe As Integer
With Charts("Diagramm1")
.SetSourceData Source:=Worksheets("Messwerte 2").Range("C3:L12"), _
PlotBy:=xlRows
For inReihe = 1 To .SeriesCollection.Count
.SeriesCollection(inReihe).Name = "Hallo " & inReihe
Next inReihe
End With
End Sub


Bis später,
Karin

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 14:40:39
Jörg
Hallo Karin,
hm, laeuft - ein ganz bloeder Fehler: ich habe den Excel-Code aus dem Makro uebernommen, nicht die VBA-Variante. Scheinbar ein signifikanter Unterschied...
Mein XValues funktioniert aber leider immer noch nicht:
Er soll ja die Schleife auf Basis von "Messwerte 1" 3x durchlaufen, beginnnend mit 1. Als Wert muss ich ja logischerweise einen Range einsetzen (die Excel-Variante a la "='Messwerte 1'!RC:RC" taugt ja nach meiner neusten Erkenntnis nix):
With Charts(1)
For i = 1 To Ende_Zeile - 2
.SeriesCollection(i).XValues = Sheets(1).Range(Cells(3, 2), Cells(Ende_Zeile, Ende_Spalte))
Next
End with
Hier weiss ich wirklich nicht mehr weiter - wahrscheinlich auch nur noch ein kleinerer Schnitzer drin...
Ciao
Joerg

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 15:47:00
Beverly
Hi Joerg,
sorry, aber jetzt verstehe ich ganz und gar nichts mehr

ich habe den Excel-Code aus dem Makro uebernommen, nicht die VBA-Variante.


Excel-Code und VBA sind doch dasselbe ?!
Was meinst du hiermit:


Er soll ja die Schleife auf Basis von "Messwerte 1" 3x durchlaufen, beginnnend mit 1


Ich kann auch nicht nachvollziehen, was du damit meinst:


die Excel-Variante a la "='Messwerte 1'!RC:RC" taugt ja nach meiner neusten Erkenntnis nix


Außerdem: Zitat aus deinem 1. Beitrag:


Nun moechte ich per VBA den Datenbereich in der Datenquelle und somit auch im Diagramm erweitern (kein neues Diagramm!). 


Genau das macht doch der Code, den ich gepostet habe.
Bis später,
Karin

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 16:31:34
Jörg
Ok, nochmal langsam:
Mein Problem war:
a.) der neue Datenbereich
Das Problem mit dem Datenbereich ist Dank Dir mit "SetDataSource" geloest - vielen Dank!
b.) die Beschriftung der x-Achse und y-Achse
Die Y-Werte funktionieren nach Deinem Code. Waehrend ich der Meinung war, den mit dem Makro-Rekorder aufgezeichneten Code 1:1 durch Copy Paste in einem Sub implementieren zu koennen, scheint das nicht zu gehen. VBA erwartet offensichtlich einen Code a la "Range(Cells1(x,y),Cells2(x,y)", waehrend das Makro einen Code a la "='Messwerte 1'!RC:RC" aufzeichnet.
Bis hierhin funktioniert jetzt alles!
_____
Das verbleibende Problem ist die Beschriftung der x-Achse, was mit XValues geschieht.
Zeichne mal mit dem Makro-Rekorder den Range B3:B12 fuer die X-Werte auf: der schreibt dir 10x "ActiveChart.SeriesCollection(i).XValue = "='Messwerte 1'!R3C2:R3C12" auf). Das ist aber nicht reproduzierbar, ich kriege sofort den Laufzeitfehler.
Also, ich ganz schlau:
adequat zu ".SeriesCollection(i).Name" (Y-Werte) muesste doch auch ".SeriesCollection(i).XValues" (X-Werte)funktionieren, anzunehmen auch in der Form "Range(Cells1(x,y),Cells2(x,y)" wie oben.
Tut es aber leider nicht und ich verstehe nicht, warum! Besser verstanden?
Danke fuer die Ausdauer...
Joerg

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 18:04:00
Beverly
Hi Joerg,
besser verstanden - ja.
Der Grund für dieses eigenartige Verhalten liegt im Diagrammtyp begründet. Du hast nur die Möglichkeit, den Wertebereich insgesamt anzusprechen
.SetSourceData Source:=Sheets("Messwerte 2").Range("A1:L12")
Bis später,
Karin

AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 18:14:00
Jörg
Das ist ja bloed, "zu Fuss" geht das...!
Ich bekomme naemlich die x- und y-Werte aus einem User-Form, d.h. der Benutzer kann die Skalierung ändern. So überschreibe ich die Bezeichnungen der x- und y-Achse jedes Mal beim Öffnen der Datei. Resultat ist, dass ich in dem Diagramm nicht mehr die eigentliche Skalierung angezeigt bekomme (1,2 - 1,4 - 1,6 - usw.), sondern aufsteigende Zahlen von 1 bis 10 im Fall der x-Werte. Manuell kann ich die mit einem Eintrag im Diagramm-Dialog aendern, aber das ist ja eben nicht die feine englische Art.
Da machste nix - trotzdem Danke!
Gruss
Joerg
Denn jedes mal, wenn ich die x-Werte loesche und wieder neu schreiben

Anzeige
AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 18:22:43
Beverly
Hi Jörg,
ich kenne zwar nicht den gesamten Ablauf in deinem Projekt, aber vielleicht könntest du das so machen, dass du die X-Werte per Code wieder in die Tabelle einträgst und das Diagramm neu erstellst?
Bis später,
Karin

AW: SeriesCollection in Chart per VBA ansprechen
26.07.2007 18:26:00
Jörg
Hm, hab ich schon dran gedacht, aber das waere der steinige Weg, das Ding nochmal neu anzufangen - ich hab's naemlich eigentlich fertig, bis eben auf diesen einen kleinen Schnitzer...!
Aber vielleicht packt mich ja noch der perfektionistische Ehrgeit und ich setz' mich nochmal dran an das Thema.
Einen schoenen Feierabend auf jeden Fall und nochmal Danke
Joerg
Anzeige

63 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige