Loeschen SerieCollection Name Index
Andi
anbei eine Lösung wie man ein oder mehrere Datenreihen (Kriterium: Datenreihe Name) löschen kann.
Da ich im Netz mehr oder weniger nur brökchenweise etwas brauchbares gefunden habe, stelle ich meine Variante ins Net. Verbesserungen sind willkommmen.
Mit Chart Objekten zu arbeiten ist ziemlich aufwendig, wenn man nichts weis, da die unabhängig von VBA ein regelrechtes Eigenleben haben.
Anrregungen und Verbesserungen sind erwünscht.
Gruß Andi
Funtion Datenreihenloeschen()
arrA = Split("Reihenname1, Reihenname2, Reihenname3, Reihenname_nn", ",")
Set sheet1 = Activesheet
Set oChartReport = sheet1.ChartObjects(1).Chart
'Loeschen einer Reihe via VBA nur möglich, wenn jede Reihe mindestens einen Wert besitzt!
For i = 4 To 12
If sheet1.Cells(i, 15) = "" Then
sheet1.Cells(i, 15) = 0
End If
Next
'Der eigentliche Loeschalgorithmus für bestimmte Datenreihen
'Da bei jedem Loeschvorgang der Index der SeriesCollection unbahängig von VBA durch das 'Steuerelement ChartObjekt neu gesetzt wird,
'aber nur über den Index ein Chart Elememt geloescht werden kann, muß VBA nach dem Loeschen 'einer Datenreihe über eine Testschleife die gültigen und vorhandenen Indexe der übrigen
'Reihe initieren. Entspricht der neue Index dem Kriterium der zu löschenden Datenreihe, 'Datenreihe löschen. Der Algorithmus wiederholt sich gem. der Anzahl zu löschenden 'Datenreihen (Name)
found = False
For n = 0 To UBound(arrA())
On Error Resume Next
For i = oChartReport.SeriesCollection.Count To 1 Step -1
If i ungleich 0 Then
If InStr(oChartReport.SeriesCollection(i).Name, arrA(n)) istgroesser 0 Then
If Err.Number = 0 Then
t = i
found = True
Exit For
End If
End If
End If
Next
On Error GoTo 0
If found = True Then
oChartReport.SeriesCollection(t).Delete
found = False
End If
Next
Set oChartReport = Nothing
Set Sheet = Nothing
End Function