für eine Auswertung möchte ich per vba Daten aus einer Tabelle in ein Balkendiagramm übertragen. Die Tabelle soll in Zukunft dynamisch wachsen, aus diesem Grund habe ich ein Makro eingebaut, mit dessen Hilfe mein Diagramm aktualisiert werden kann (Die Tabelle und das Diagramm sind in unterschiedlichen Arbeitsblättern). Im Großen und Ganzen funktioniert das auch schon gut. Allerdings weiß ich nicht, wie ich bei meinem Balkendiagramm die letzte beschriebene Zeile bzw. in einem zweiten Fall die letzte beschriebene Spalte übergeben kann.
Es wäre super wenn ihr mir hier Helfen könntet :-)
Ich habe es mit
'letzte beschriebene Zeile in Spalte B ermitteln
lzeile = Worksheets("Hilfswerte").Cells(Rows.Count, 2).End(xlUp).Row
.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(lzeile, 3))
.SeriesCollection(1).XValues = Range(Cells(3, 2), Cells(lzeile, 2))
versucht. Hier wird zwar die richtige Zeilennummer ermittelt aber leider werden die Daten nicht in das Diagramm übertragen.
Im folgenden findet ihr meinen vollständigen Code, der funktioniert, allerdings das dynamische Wachstum noch nicht implementiert.
Viele Dank schon jetzt für eure Hilfe
Sub Diagramm_erstellen()
Range("A1:T1").Select
ActiveCell.FormulaR1C1 = "Auswertung"
' vorhandene Diagramme löschen:
With ActiveSheet
If .ChartObjects.Count > 0 Then .ChartObjects.Delete
End With
' Diagramm erstellen
Sheets("Uebersicht").Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
'Position und Größe festlegen
With ActiveChart.Parent
.Left = 250
.Top = 150
.Width = 700
.Height = 400
End With
'Diagramm Umrandung
With Selection.Format.Line
.Visible = msoTrue
.Weight = 4
End With
'Beschriftung Diagramm
With ActiveChart
.HasTitle = True
.ChartTitle.Text = "mittlere Bewertung"
'Beschriftung Achsen
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Datum"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Note"
End With
' Werte der x-Achse
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.Axes(xlCategory).TickLabels.Orientation = 45
.SeriesCollection(1).Values = "='Hilfswerte'!$C$3:$C$6"
.SeriesCollection(1).XValues = "='Hilfswerte'!$B$3:$B$6"
.SeriesCollection(1).name = "=""Durchschnittsnote"""
'.Axes(xlCategory).MinorUnit = 1
.SeriesCollection(1).Trendlines.Add Type:=xlLinear, name:="Trend (Durchschnittsnote)"
End With
'Werte der y-Achse
With ActiveChart.Axes(xlValue)
.MaximumScale = 4
.MinimumScale = 1
.MinorUnit = 1
.MajorUnitIsAuto = True
End With
' Gitternetzlinien zufügen:
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
End Sub