Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro läuft nur im Debug-Modus --> Laufzeitfehler

Makro läuft nur im Debug-Modus --> Laufzeitfehler
08.11.2013 18:47:53
mck
Hallo alle zusammen,
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Makro läuft nur im Debug-Modus
08.11.2013 19:40:51
Hajo_Zi
verzichte auf select.
ActiveChart.Legend.LegendEntries(zähler - 1).Delete.
Ich baue keine Datei nach, die Zeit hat schon jemand investiert.
Ein Nachbau sieht bestimmt anders aus als das Original.
Ein Link zur Datei wäre nicht schlecht.

AW: Makro läuft nur im Debug-Modus
09.11.2013 14:34:16
mck
Hallo,
danke für die schnelle Antwort.
@ Hajo_Zi
deinen Tipp mit dem Verzicht auf "Selection" habe ich ausprobiert.
'-------------------------------------------------------
'Legendeneintrag löschen---
ActiveChart.Legend.LegendEntries(zähler - 1).Delete
'-------------------------------------------------------
Es läuft jetzt komischerweise schon sehr stabil. Der Fehler tritt nur noch sehr selten auf. Ich werde nochmal alle Zähler kontrollieren...
Worin liegt denn der Unterschied ob ich eine Auswahl mit "Selection" treffe oder gleich den Befehl für "Delete" gebe?
Falls das Problem weiterhin besteht, versuche ich ein Minimalbeispiel zu posten.
@ Luschi
dieses Problem war mir bereits bekannt. Daran liegt es leider nicht. Diesbezüglich habe ich ebenfalls kontrolliert, ob zwischendurch etwas anderes markiert/aktiviert ("Activate...") wird.
Falls dies eine mögliche Ursache des Fehlers sein sollte, müsste dieser Fehler doch im Debug-Mode reproduzierbar sein?
Vielen Dank euch beiden für eure Hilfe.
Schöne Grüße,
mck

Anzeige
AW: Makro läuft nur im Debug-Modus
10.11.2013 11:19:05
mck
Hallo nochmal,
ich habe nun vieles ausprobiert. Es liegt anscheinend nicht an den unterschiedlichen Arten, wie man die entsprechenden Legendeneinträge anspricht (mit Select, oder ohne Select).
Es scheint, wie wenn beim Erstellen einer neuen "NewSeries" nicht immer ein entsprechender Platzhalter in der Legende angelegt wird. Sobald dieser nicht vorhanden ist, stimmen natürlich die internen Zähler für die Legendeneinträge nicht mehr und ein löschen ist unmöglich.
Ich habe nun doch ein Minimalbeispiel mit Beispieldatensätzen erstellt. Auch in dieser Datei funktioniert meistens beim ersten Ausführen der Makros alles ohne Probleme. Führt man diese dann öfters aus, kommt der oben beschriebene Fehler...
https://www.herber.de/bbs/user/88019.xlsm
Das Exce-File enthält zwei Diagramme. Das untere dient als Beispiel, wie das obere, nach Ausführen der Makros, aussehen soll.
Die Datensätze sind im Tabellenblatt "Daten".
Vielleicht kann mir ja doch jemand weiterhelfen?
Schonmal danke im Voraus.
Schönen Tag,
mck

Anzeige
AW: Makro läuft nur im Debug-Modus --> Laufzeitfehler
08.11.2013 20:16:06
Luschi
Hallo mck,
immer wenn man auf Objekte zurückgreift, die mit 'Active...' beginnen, bedeutet, das man als Vba-Programmierer darauf angewiesen ist, das dieses Objekt auch wirklich auf den Monitor sichtbar ist und den 'Fokus' besitzt: ActiveCell, ActiveWorkbook, ActiveChart usw....
Hier muß man sich als Vba-Prog eine eigene Objektvariable erzeugen und dann kann man diese Objekt ansprechen, ohne es vorher selektiert bzw. aktiviert hat.
Aber ohne praktisches Beispiel bleibt das alles blose Theorie!
Gruß von Luschi
aus klein-Paris

AW: Makro läuft nur im Debug-Modus --> Laufzeitfehler
11.11.2013 21:29:36
mck
Hallo nochmal,
hat tatsächlich keiner eine Idee wie ich oben beschriebenes Problem lösen könnte?
Wäre für jeden Tipp sehr dankbar.
einen schönen Abend,
mck

Anzeige
AW: Makro läuft nur im Debug-Modus --> Laufzeitfehler
12.11.2013 14:12:34
Luschi
Hallo mck,
laut: http://www.office-loesung.de/ftopic175548_0_0_asc.php
soll dieser Vba-Code sehr erfolgversprechend sein:

Option Explicit
Sub x()
Dim ch As Chart, i As Integer
Set ch = ActiveSheet.ChartObjects(1).Chart
If ch.HasLegend = False Then Exit Sub
For i = 1 To ch.SeriesCollection.Count
If ch.SeriesCollection(i).Name = "HALLO" Then
ch.Legend.LegendEntries(i).Delete
Exit Sub
End If
Next
End Sub
Gruß von Luschi
aus klein-Paris

AW: Makro läuft nur im Debug-Modus --> Laufzeitfehler
17.11.2013 18:05:39
mck
Hallo,
danke für deine Hilfe mit dem link!
Den Code selber konnte ich in meinem Fall nicht in dieser Art anwenden, allerdings bin ich durch den geposteten Link im anderen Forum auf einen Eintrag gestoßen der mir letztendlich weitergeholfen hat.
Lösung:
Werden Datensätze im Diagramm hinzugefügt, wird vorher die Legende rausgenommen: ".HasLegend = False" Sind alle Datenkurven hinzugefügt, wird die Legende wieder eingefügt. ".HasLegend = True"
Anschließend werden mit entsprechenden Zählern die Legendeneinträge von hinten nach vorne gelöscht welche nicht erscheinen sollen.
Einen schönen Abend.
mck
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige