Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA bricht ohne Fehler ab

VBA bricht ohne Fehler ab
07.03.2013 02:59:16
Franc
Hi,
ich habe ein Makro was ca. 1 Minute braucht bis es fertig ist - beschleunigen kann man das auch nicht.
Mit Application.EnableCancelKey = xlDisabled habe ich die Möglichkeit ausgeschalten das man es mit Esc unterbricht.
Eine on error Anweisung ist auch drin
das Problem
Ich erwarte nicht von den Nutzern das sie eine Minute warten während Excel arbeitet.
Das heißt die Nutzer arbeiten in anderen Programmen und dann kann folgendes auftreten. Denk das Problem tritt meißt dann auf, wenn auch andere Programme länger brauchen.
Das Makro bricht ab und das wars. Es führt auch nicht mehr die Anweisungen aus die bei einem "normalen" Fehler ausgeführt werden.
Im Endeffekt sieht der Nutzer all das was er normal nicht sehen soll und kann auch alles tun was er nicht tun soll. (unter anderem die Mappe speichern, mehrere Zeilen markieren etc.)
Ja - ich weiß das man sowas auch einfach umgehen kann aber ich bin mir sicher das die Nutzer nicht wissen wie das geht auch wenns einfach ist.
Jemand eine Idee wie man das abbrechen vom Makro verhindern kann bzw. auch dieses abbrechen abfängt?

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA bricht ohne Fehler ab
07.03.2013 10:43:15
PointzOfView
Hallo Franc,
poste doch mal deinen Code/die Codes die in der besagten Minute ablaufen. Dann kann man sicher eher sagen, woran es liegen kann.
Gruß
PointzOfView

AW: VBA bricht ohne Fehler ab
07.03.2013 14:37:41
Franc
Das geht leider nicht
Soviel macht der Code aber nicht.
Es werden aktuell mit dir() 32 xls Dateien geöffnet, der Inhalt analysiert und bei passenden Inhalten importiert. Im Netzwerk 32 Listen öffnen dauert halt bis zu 2 sek pro Datei.
Ich kann sagen das der Code fehlerfrei ist. Wenn ich nichts nebenbei erledige läuft er immer durch. Der Fehler tritt nur dann auf, wenn man etwas anderes nebenbei in anderen Programmen erledigt und diese Programme dann ebenfalls eine "Denkpause" von 2 - 3 sek einlegen. Geschieht das, ist es fast immmer so dass das Makro unterbrochen wird. Ka ob Excel damit Probleme hat, dass das System grad nicht reagiert.

Anzeige
1x rate ich mit
08.03.2013 16:28:43
Oberschlumpf
Hi Franc
Es ist oft schon nicht einfach, mit vorhandenem Code einen Fehler zu finden.
Wenn der Code nun aber nicht gezeigt wird, ist es noch schwieriger, Fehler zu finden.
Meine Idee:
Schalt mal die On Error Anweisung überall aus.
Starte dein Makro
Starte die anderen Programme, die dein Makro zum Absturz bringen
Mal sehen, ob sich nun der Debugger "meldet".
Hilfts?
Ciao
Thorsten

Anzeige
frage ist natürlich noch offen ^^ o.T.
07.03.2013 14:38:22
Franc
.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA-Fehlerbehebung: Makro bricht ohne Fehler ab


Schritt-für-Schritt-Anleitung

  1. Code überprüfen: Stelle sicher, dass dein VBA-Code fehlerfrei ist. Gehe dazu durch die einzelnen Abschnitte und achte auf mögliche Probleme.
  2. On Error Anweisung: Versuche, die On Error Anweisung vorübergehend auszuschalten, um zu sehen, ob der Debugger eine Fehlermeldung ausgibt, wenn das Makro abbricht.
    On Error Resume Next ' Deaktiviert die Fehlerroutine
  3. Testumgebung: Starte das Makro und gleichzeitig andere Programme, die möglicherweise die Leistung beeinträchtigen. Achte darauf, ob der Fehler reproduzierbar ist.
  4. Application.EnableCancelKey: Setze Application.EnableCancelKey = xlDisabled, um zu verhindern, dass das Makro durch Drücken der Esc-Taste abgebrochen wird.
  5. Monitoring: Überwache den Task-Manager, um zu sehen, ob beim Ausführen des Makros andere Programme viel CPU-Leistung benötigen.

Häufige Fehler und Lösungen

  • Makro bricht ohne Fehlermeldung ab: Dies kann passieren, wenn andere Programme Ressourcen beanspruchen. Versuche, weniger Programme gleichzeitig zu nutzen.
  • Fehlende Rückmeldungen: Wenn das Makro lange dauert, könnten die Benutzer den Eindruck haben, dass Excel nicht mehr reagiert. Verwende Fortschrittsanzeigen, um den Status anzuzeigen.
  • Zugriffsprobleme auf Netzwerkdateien: Wenn du Dateien im Netzwerk öffnest, kann es zu Verzögerungen kommen. Überprüfe die Netzwerkverbindung und die Dateirechte.

Alternative Methoden

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um mehr Informationen über den Abbruch des Makros zu erhalten.
    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    ' Protokolliere den Fehler
    Debug.Print "Fehler " & Err.Number & ": " & Err.Description
  • Async-Prozesse: Überlege, ob du Teile des Codes in Hintergrundprozesse auslagern kannst, um Excel flüssiger laufen zu lassen.

Praktische Beispiele

  • Codebeispiel für ein einfaches Makro:
    Sub TestMakro()
       Dim i As Integer
       For i = 1 To 100000
           ' Simuliere eine langwierige Aufgabe
           Application.Wait Now + TimeValue("00:00:01")
       Next i
    End Sub
  • Fehlerbehandlung bei Dateioperationen:
    Sub DateiÖffnen()
       On Error GoTo ErrorHandler
       Workbooks.Open "Netzwerkpfad\Datei.xlsx"
       Exit Sub
    ErrorHandler:
       MsgBox "Fehler beim Öffnen der Datei: " & Err.Description
    End Sub

Tipps für Profis

  • Verwende DoEvents: Füge DoEvents in langen Schleifen ein, um Excel zu erlauben, Eingaben zu verarbeiten und die Benutzeroberfläche responsiv zu halten.
  • Optimierung des Codes: Reduziere die Anzahl der Bildschirmaktualisierungen während des Makroablaufs, um die Leistung zu steigern.
    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Warum bricht mein Makro ab, ohne dass eine Fehlermeldung erscheint?
Es kann sein, dass andere laufende Programme die Systemressourcen beanspruchen. Versuche, die Leistung zu optimieren, indem du weniger Programme gleichzeitig verwendest.

2. Wie kann ich verhindern, dass Benutzer während des Makroablaufs in Excel arbeiten?
Du kannst die Benutzeroberfläche sperren oder die Application.EnableCancelKey-Eigenschaft nutzen, um das Abbrechen des Makros zu verhindern.

3. Was kann ich tun, wenn das Makro sehr lange dauert?
Überlege, ob es Möglichkeiten gibt, den Code zu optimieren oder Teile des Prozesses asynchron auszuführen, um die Belastung für Excel zu reduzieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige