577 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich versuche das erste mal ein Balkendiagramm auf einem Tabellenblatt einzufügen. Ich habe mir dafür eine "Vorlage" aus dem web als Grundlage genommen:

Sub SaeulendiagrammTest()

With ActiveSheet.Shapes.AddChart.Chart
ActiveSheet.ChartObjects(1).Top = Rows(Cells(Rows.Count, 1).End(xlUp).Row + 3).Top
ActiveSheet.ChartObjects(1).Left = Columns(2).Left

.ChartType = xlColumnClustered
.SetSourceData Source:=Range("D4:O4"), PlotBy:=xlColumns
With .SeriesCollection(1)
.XValues = Range("D4:O4")
.Values = Range(Cells(74, 4), Cells(74, 15))

End With
End With

End Sub

Im Range("D4:O4") stehen die Monatsbezeichungen, die Daten stehen in Zeile 74. Das Diagramm steht mit dem Code erst einmal...
Jetzt möchte ich in jedem Monat noch eine zweite Datenreihe aus Zeile 76 im gleichen Diagramm abbilden. Wie kann ich das erreichen. Bin für jeden Tipp dankbar, ggf, auch für einen komplett neuen Ansatz.
Danke und Gruß A.

5 Antworten

0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
... es handelt sich natürlich um ein Säulendiagramm.
0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Ich hab mal den Makrorekorder bemüht:
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Values = "=Tabelle1!$D$76:$O$76"
ActiveChart.SeriesCollection(4).Name = "=""Neue Reihe"""

Ggf. muss der Name des Diagrammes noch angepasst werden.

Gruß Flupo
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Danke Flupo,

das klappt zwar so, paßt aber leider nicht in meine Programmumgebung. Ich brauche in dem Code mehr Flexibilität bei der Zuordnung der Daten.
VG A.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

versuch es mal so:

Sub SaeulendiagrammTest()

With ActiveSheet.Shapes.AddChart.Chart
ActiveSheet.ChartObjects(1).Top = Rows(Cells(Rows.Count, 1).End(xlUp).Row + 3).Top
ActiveSheet.ChartObjects(1).Left = Columns(2).Left

.ChartType = xlColumnClustered
.SetSourceData Source:=Range("D4:O4"), PlotBy:=xlColumns
With .SeriesCollection(1)
.XValues = Range("D4:O4")
.Values = Range(Cells(74, 4), Cells(74, 15))
End With
'zweite Datenreihe hinzufügen
.SeriesCollection.Add Source:=Range(Cells(76, 4), Cells(76, 15))

End With

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Wo ist das Problem? Die Parameter wie Zellbereich und Name der Reihe sind
einfache Strings, die sich ganz einfach durch Variablen ersetzen lassen. Und die
wiederum kannst du vor der Anwendung beliebig zusammenbauen. Bei Zahlen
muss man nur daran denken, sie vorher in Strings umzuwandeln.

Gruß Flupo
...