Clever-Excel-Forum

Normale Version: Einem Diagramm per VBA eine neue Datenreihe hinzufügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ins Forum,
 
ich möchte per VBA einem bestehenden eingebetteten Diagramm eine neue Datenreihe hinzufügen.
 
Dazu habe ich folgenden Programmcode geschrieben, welcher zwar fehlerfrei durchläuft. Leider passiert aber nichts. Das Diagramm erhält keine neue Datenreihe.

Hier der Code:

Code:
Sub sub_Neue_Datenreihe_aus_Tabelle()
  Dim obj_Diagramm As Chart  
 
  'Diagrammvariable auf das Diagramm zeigen lassen
  Set obj_Diagramm = ThisWorkbook.Worksheets("Tabelle1").ChartObjects("Mein Diagramm").Chart  
 
  'Neue Datenreihe hinzufügen und Namen sowie Werte definieren
  With obj_Diagramm.SeriesCollection.NewSeries
 
    'Reihenname
    .Name = "Neue Datenreihe"
    
    'Reihenwerte
    .Values = "=Tabelle2!$G$2:$G$29"
        
    'Werte auf der x-Achse
    .XValues = "=Tabelle2!$C$2:$C$29"

    'Diagrammtyp dieser Datenreihe ändern in Liniendiagramm  
    .ChartType = xlLine
  End With
End Sub

Kann mir jemand helfen?

Grüße
zachy
Hallo Zachy,

anhand des Codes können zwei Fehlerursachen möglich sein:
1.) Der Zellenbreich (G2:G29) mit den Reihenwerten ist leer
2.) Du hast bereits dem Digramm den Zellenbereich (G2:G29) zugewiesen
Hallo Matthias84,

beides ist nicht der Fall Huh 

Der Code läuft ohne Fehler durch, aber an dem Diagramm ändert sich einfach nichts. :22: 

Habe ich vielleicht den ganz falschen Ansatz?

VG
zachy
Oh Mann, ich habe den Fehler gefunden!

Es liegt an der Zuweisung an die Objektvariable:


Code:
Set obj_Diagramm = ThisWorkbook.Worksheets("Tabelle1").ChartObjects("Mein Diagramm").Chart

Die Zuweisung ist falsch! Ich habe in dem With-Block gerade mal die Objektvariable rausgenommen und dann ActiveChart eingesetzt. Das funktioniert!


Code:
  With ActiveChart.SeriesCollection.NewSeries
 
    'Reihenname
    .Name = "Neue Datenreihe"
    
    'Reihenwerte
    .Values = "=Tabelle2!$G$2:$G$29"
        
    'Werte auf der x-Achse
    .XValues = "=Tabelle2!$C$2:$C$29"

    'Diagrammtyp dieser Datenreihe ändern in Liniendiagramm  
    .ChartType = xlLine
  End With


Jetzt ist natürlich meine Frage, wie ich die Zuweisung an die Objektvariable korrekt erstelle.

VG
zachy
Hallo Zachy,

da würde ich zuerst mal nach "Mein Diagramm" schauen. Heißt das wirklich so? Ist das auf Tabelle1?
(17.07.2018, 17:25)schauan schrieb: [ -> ]Hallo Zachy,

da würde ich zuerst mal nach "Mein Diagramm" schauen. Heißt das wirklich so? Ist das auf Tabelle1?

Ja, es heißt wirklich so und der Name des Blattes stimmt auch.

Andere Ideen?

Grüße
Moment, habe gerade gesehen, dass einen Unterschied zwischen dem Namen des ChartObjects und des Charts gibt. Eine Schleife hat's gezeigt.

Das ChartObject heißt quasi "Mein Diagramm", das Chart jedoch "Tabelle1 Mein Diagramm".

Aber vom Prinzip her müsste mein Code doch trotzdem korrekt auf dieses Chart referenzieren, oder?

Ich bin jetzt echt irritiert Huh Huh
Hallöchen,

hast Du auch mal im Datenbereich des Diagramms nachgeschaut, ob da was hinzugefügt wurde?

Dein erster Code funktioniert bei mir, wie gesagt und siehe Anhang.
Ich habe damit eine Datenreihe hinzugefügt, bevor es ein Blatt Tabelle2 gab. Da wurde eine Datenreihe erstellt, mit 3x 0. Im Datenbereich steht aber =Tabelle2!...
Dann habe ich ein Blatt Tabelle2 hinzugefügt und den Code nochmal laufen lassen. Nun habe ich auch eine entsprechende Linie.
Die xValues hast Du übrigens umsonst drin, die gibt's nicht beim Liniendiagramm.