Hallo,
im folgenden VBA-Code wird der Chart-Objekt Objekt-orientiert erstellt:
Option Explicit
Sub deleteCharts()
'On Error Resume Next
If ActiveSheet.ChartObjects.Count > 0 Then
ActiveSheet.ChartObjects.Delete
End If
End Sub
Sub RunningCMD()
Dim vendors As Worksheet
Set vendors = ActiveWorkbook.Worksheets(1)
vendors.Select
Call deleteCharts
' Union(Range("g2", Range("g2").End(xlDown)), Range("i2", Range("i2").End(xlDown))).Select
' vendors.Shapes.AddChart XlChartType.xl3DColumnClustered, 200, 130, 400, 300
Dim rng As Range
Dim shs As Shape
Set rng = Union(Range("g2", Range("g2").End(xlDown)), Range("i2", Range("i2").End(xlDown)))
Set shs = vendors.Shapes.AddChart(XlChartType.xl3DColumnClustered, 200, 130, 400, 300)
shs.Chart.SetSourceData Source:=rng
End Sub
Im Befehl deleteCharts wird vor dem Delete-Befehl erst geprüft, ob Charts vorhanden sind. Nur dann, wenn auch welche vorhanden sind, werden diese gelöscht. Dieser Ansatz ist besser, als einfach blind drauf los Charts zu löschen.
Vielleicht funktioniert dieser Aufruf in Excel 2010?
Der Code wurde in der Version 2013 erfolgreich getestet.
LG, BigBen
|