Makro läuft nur im Debug-Modus --> Laufzeitfehler
08.11.2013 18:47:53
mck
ich hatte erst kürzlich eine Frage bzgl. VBA-Programmierung und mir wurde hier sehr schnell und kompetent geholfen.
Vielleicht könnt ihr mir auch bei dieser Sache weiterhelfen...
In meinem Excel-Sheet wird mittels einem CommandButton ein Makro aufgerufen, welches mir aus bestimmten Datensätzen Kurven in ein Diagramm einfügt.
Die jeweiligen Nummerierungen der einzelnen SeriesCollections(...) werden mittels eines "Zählers" jeweils um 1 erhöht. Bis dahin läuft alles normal.
In einem zweiten Makro kann ich ebenfalls mit einem CommandButton weitere Datenkurven im selben Diagramm einfügen. Auch das funktioniert prima.
Je nach Datensatzmenge, kann es vorkommen dass bis zu 45 Kurven auf einmal erstellt werden. Jede dieser Kurven erhält einen Eintrag in der Legende. Ich benötige aber nur
jeden dritten Legendeneintrag. Deshalb lösche ich mit Hilfe eines zweiten Zählers die entsprechenden Legendeneinträge sofort nach Erstellen des jeweiligen Datensatzes.
Für 1 Datensatz funktioniert das Erstellen und Löschen der Kurven ohne Fehler.
Bei mehreren Datensätzen erhalte ich (mir kommt es zumindest zufällig vor) folgende Fehlermeldung in den Zeilen in denen ich den Legendeneintrag löschen möchte:
Laufzeitfehler '-2147467259 (80004005)'
Ich habe die durchlaufenden Zähler alle mehrfach kontrolliert. Da stimmt alles!
Gehe ich in den Debug-Mode und lasse mit F8 alle Schritte durchlaufen, kommt die Fehlermeldung sehr selten. Allerdings sind auch im Debug-Modus die Fehlerzeilen nicht immer die selben.
Hier ein Ausschnitt aus dem VBA-Code:
'------------------------------------------------------------------------------------
'Variable als interner Zähler---
zähler = zähler + 1
'Datensatz erstellen---
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(zähler).XValues = "=Test!$V$1:$V$2"
ActiveChart.SeriesCollection(zähler).Values = "=Test!$V$3:$V$4"
'Formatieren---
ActiveChart.SeriesCollection(zähler).Select
Selection.MarkerStyle = -4142
With Selection.Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorText1
.DashStyle = msoLineSysDash
.Weight = 1
End With
With Selection.Format.Line
.ForeColor.ObjectThemeColor = msoThemeColorText1
End With
'Legendeneintrag löschen---
ActiveChart.Legend.LegendEntries(zähler - 1).Select
Selection.Delete
'------------------------------------------------------------------------------------
Vielleicht kann mir ja jemand einen Tipp geben...?
Eventuell gibt es eine Möglichkeit eine neue Kurve in ein Diagramm einzufügen, ohne dass der Legendeneintrag austomatisch erstellt wird (bzw. das Excel-interne "Dateinreihen1" etc...)?
Vielen Dank im Voraus.
viele Grüße,
mck