Supportnet / Forum / Tabellenkalkulation
VBA: Diagramm mit Daten füttern
Frage
Hi,
ich habe folgendes Problem. Ich will ein Diagramm dynamisch mit Daten füttern. Zunächst habe ich dazu immer ein neues mit folgendem Code erstellt, den ich im Netz gefunden und nach meinen Bedürfnissen angepasst habe:
Public Sub CreateChartObjectRange()
Dim wksData As Worksheet
Dim rngData As Range
Dim nRowsCnt As Long
Dim nColsCnt As Integer
Dim objChart As Chart
Dim objChartObj As ChartObject
Set wksData = ThisWorkbook.Worksheets("aw")
With wksData
nRowsCnt = .Cells(.Rows.Count, 1).End(xlUp).Row
nColsCnt = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rngData = .Range(.Cells(1, 1), .Cells(nRowsCnt, nColsCnt))
End With
Application.ScreenUpdating = False
Set wksData = ThisWorkbook.Worksheets("Auswertung")
Set objChart = Application.Charts.Add
With objChart
.ChartType = xl3DPie
.SetSourceData Source:=rngData, PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Text = "Test1"
.Location Where:=xlLocationAsObject, Name:=wksData.Name
End With
Set objChartObj = wksData.ChartObjects( _
wksData.ChartObjects.Count)
With objChartObj
.Left = 10
.Top = 150
.Width = 300
.Height = 200
End With
End Sub
Dies hat auch einwandfrei funktioniert. Nun hab ich mir überlegt, das es eigentlich unnötig ist immer ein neues Diagramm zu erstellen, die Formatierung ist recht umständlich, ich müsste das alte immer wieder lösche etc. pp. Daher will ich nun einmal ein Diagramm manuell erstellen und dieses mit den neuen Daten immer wieder füttern.
Die Daten bekommen ich ja mit dem Code:
With wksData
nRowsCnt = .Cells(.Rows.Count, 1).End(xlUp).Row
nColsCnt = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rngData = .Range(.Cells(1, 1), .Cells(nRowsCnt, nColsCnt))
End With
in die Variable rngData gespeichert, doch wie bekomme ich diese nun in das Diagramm?
Ich hab zunächst erstmal einiges auskommentiert und die Zeile
.SetSourceData Source:=rngData, PlotBy:=xlColumns
drin gelassen!
Die Zeile
Set objChart = Application.Charts.Add
hab ich abgeändert auf
Set objChart= wksdata.ChartObjects(1)
was aber aufgrund der Unverträglichkeit der Typen (laut Excel) nicht funktioniert.
Wie bekomme ich also die Daten aus rngdata in mein Diagramm?
Vielen Dank schonmal für die Hilfe!