it-swarm.com.de

Excel VBA-App wird spontan mit der Meldung "Die Codeausführung wurde angehalten" beendet

Nach allem, was ich im Internet sehen kann, ist dies eine recht häufige Beschwerde, aber die Antworten scheinen seltener zu sein. Das Problem ist folgendes:

Wir verfügen über eine Reihe von Excel-VBA-Apps, die auf mehreren Anwendermaschinen einwandfrei funktionieren. Auf einer Maschine stoppen sie jedoch in bestimmten Codezeilen. Es sind immer dieselben Linien, aber diese Linien scheinen nichts miteinander gemein zu haben.

Wenn Sie nach dem Anhalten F5 (Ausführen) drücken, wird die App fortgesetzt, es ist fast so, als ob ein Haltepunkt hinzugefügt wurde. Wir haben versucht, "Alle Pausen entfernen" aus dem Menü auszuwählen und sogar eine Pause hinzuzufügen und sie wieder zu entfernen.

Wir hatten dieses Problem bereits mit einzelnen Apps, und wir haben es "ausgearbeitet", indem Code aus Modulen ausgeschnitten, kompiliert und dann wieder eingefügt wurde.

Das Problem scheint sich nun auf Excel selbst und nicht auf einzelne XLS-Dateien zu beziehen. Daher sind wir unsicher, wie wir das umgehen sollen.

Jede Hilfe wäre dankbar aufgenommen :)

Vielen Dank,

Philip Whittington

124

Ich habe eine 2. Lösung gefunden.

  1. Klicken Sie im Popup auf die Schaltfläche "Debuggen".
  2. Drücken Sie Ctrl+Pause|Break zweimal.
  3. Drücken Sie die Wiedergabetaste, um fortzufahren.
  4. Speichern Sie die Datei nach Abschluss.

Hoffe das hilft jemandem.

376
Stan

Dieses Problem rührt von einer merkwürdigen Eigenart in Office/Windows her.

Nachdem ich den gleichen VBA-Code entwickelt und hunderte Male (buchstäblich) in den letzten Tagen ausgeführt hatte, bin ich gerade auf dieses Problem gestoßen. Das einzige, was anders war, ist, dass ich kurz vor diesem verblüffenden Problem versehentlich die Ausführung des VBA-Codes mit einer unorthodoxen Methode beendet habe.

Ich habe alle temporären Dateien gesäubert, neu gestartet usw. Wenn ich den Code nach all dem erneut lief, bekam ich immer noch das Problem - bevor ich in die erste Schleife ging. Es ist sinnvoll, dass Sie "Debug" in das Popup-Fenster drücken, dann zweimal [Strg + Pause] drücken und danach ohne Stopps fortfahren können weil etwas in der Kombination Office/Windows die Ausführung nicht freigegeben hat. Es klemmt.

Die überflüssige Aktion Strg + Pause löst wahrscheinlich die ausbleibende Ausführung auf.

15
user2052260

Eine Lösung ist hier :

Die Lösung für dieses Problem ist das Hinzufügen der Codezeile "Application.EnableCancelKey = xlDisabled" in der ersten Zeile Ihres macro .. Dadurch wird das Problem behoben und Sie können das Makro .__ ausführen. erfolgreich ohne Fehlermeldung "Code-Ausführung wurde unterbrochen".

Nachdem ich diese Codezeile eingefügt hatte, konnte ich Strg + Pause nicht mehr verwenden. So funktioniert es aber nicht sonderlich.

13
Stan

Ich fand Strg + Pause, während das Makro nicht lief, das Problem wurde behoben. 

5
James

Ich würde die üblichen Abhilfemaßnahmen versuchen: - Führen Sie Rob Boveys VBA Code Cleaner auf Ihrem VBA-Code aus - Entfernen Sie alle Add-Ins auf dem Benutzer-PC, insbesondere COM- und .NET-Add-Ins - Löschen Sie alle Benutzer .EXD Dateien (MSoft Update-Inkompatibilitäten) - Führen Sie Excel Detect & Repair auf dem Benutzersystem aus - Überprüfen Sie die Größe der .xlb-Datei des Benutzers (sollte 20-30K betragen) - Starten Sie anschließend alle Benutzer Dateien

3

Vielen Dank an alle für ihren Beitrag. Dieses Problem wurde durch die Wahl von REPARATUR in der Systemsteuerung behoben. Ich vermute, das registriert einige der systemeigenen COM-Komponenten von Office explizit neu und tut Sachen, die REINSTALL nicht tut. Ich gehe davon aus, dass Letzteres nur eine Checkliste durchläuft und manchmal akzeptiert, was dort ist, wenn es bereits installiert ist, vielleicht. Ich hatte dann ein anderes Problem mit der Registrierung meiner eigenen .NET-DLL für COM-Interop auf dem Computer des Benutzers (obwohl dies auch auf anderen Computern funktioniert), obwohl ich denke, dass dies eher mein Fehler als Microsoft war. Nochmals vielen Dank, ich schätze es sehr.

2

Ich hatte dieses Problem auch bei der Verwendung von Excel 2007 mit einer foobar.xlsm (Makro-aktivierten) Arbeitsmappe, die die "Code-Ausführung wurde unterbrochen" erhalten würde, indem einfach versucht wurde, die Arbeitsmappe auf dem roten X in der rechten Ecke zu schließen, ohne dass Makros ausgeführt werden alle oder alle "initialisieren" Formular-, Arbeitsmappen- oder Arbeitsblattmakros. Die Optionen, die ich bekam, waren "Ende" oder "Fortfahren", Debug war immer ausgegraut. Ich habe als voriges Poster Systemsteuerung-> Programme und Funktionen-> Rechtsklick auf "Microsoft Office Proffesional 2007" (in meinem Fall) -> Ändern-> Reparieren vorgeschlagen.

Dies löste das Problem für mich ... Ich könnte hinzufügen, dass dies bald nach einem MS-Update geschehen ist, und ich habe auch ein Addin namens "Team Foundation" in Microsoft gefunden, das ich auf keinen Fall freiwillig installiert habe

2
Carlito

Ich bin bei der Entwicklung einer komplexen Excel VBA-App einige Male auf dieses Problem gestoßen. Manchmal begann das VBA-Objekt ganz zufällig in Excel zu brechen. Die einzige Abhilfe bestand darin, die Maschine neu zu starten. Nach dem Neustart begann Excel normalerweise, normal zu agieren.

Ich habe bald herausgefunden, dass eine mögliche Lösung für dieses Problem darin besteht, einmal STRG + Pause zu drücken, wenn das Makro NICHT ausgeführt wird. Vielleicht kann dir das auch helfen.

2
bazinac

Ich möchte Stan'sAntwort # 2 aus folgenden Gründen weitere Details hinzufügen:

  • Ich habe mich selbst mehr als ein Dutzend Mal mit diesem Problem befasst und je nach Projektbedingungen zwischen stan's voodoo magic answer # 1 oder # 2 gewählt. Als ich mich immer wieder damit auseinandersetzte, wurde ich neugieriger, warum es überhaupt passiert.

  • Ich möchte auch eine Antwort für Mac-Benutzer hinzufügen.

  • Bei diesen beiden möglichen Antworten gibt es Einschränkungen:

    • wenn der Code geschützt ist (und Sie kein Passwort kennen), hilft Antwort 1 nichts.
    • wenn der Code ungeschützt ist, können Sie mit Antwort 2 den Code nicht debuggen.

  1. Dies kann folgende Gründe haben:

    • Betriebssystem weist dem Excel-Prozess keine Systemressourcen zu. ( Lösung: Man muss nur das Betriebssystem starten - die Erfolgsrate ist sehr niedrig, aber es ist bekannt, dass sie oft funktioniert.)

    • P-Code ist der Zwischencode, der in Visual Basic (vor .NET) verwendet wurde, und wird daher weiterhin in VBA verwendet. Es ermöglichte eine kompaktere ausführbare Datei auf Kosten einer langsameren Ausführung. Warum spreche ich über P-Code? Weil es manchmal zwischen mehreren Ausführungen und großen Dateien beschädigt wird oder einfach aufgrund der Installation der Software (Excel) irgendwo beschädigt wurde. Wenn der P-Code fehlerhaft ist. Die Codeausführung wird immer wieder unterbrochen. Lösung : In diesen Fällen wird davon ausgegangen, dass Ihr Code beschädigt wurde und in Zukunft möglicherweise auch Ihre Excel-Arbeitsmappe beschädigt wird Msgstr "Excel - Datei beschädigt und kann nicht geöffnet werden". Daher können Sie sich als schnelle Lösung je nach Ihren Anforderungen auf Antwort 1 oder Antwort 2 verlassen. Ignorieren Sie jedoch niemals die Anzeichen von Korruption. Es ist besser, die Codemodule in den Editor zu kopieren, die Module zu löschen, die Arbeitsmappe zu speichern und zu schließen und Excel zu schließen. Öffnen Sie nun die Arbeitsmappe erneut und erstellen Sie neue Module, wobei der Code zuvor in den Editor kopiert wurde.

  2. Mac-Benutzer können eine der folgenden Optionen ausprobieren, und diese funktionieren je nach Systemarchitektur, d. H. Betriebssystem und Office-Version

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc + Esc (Zweimal hintereinander drücken)

Sie werden mit den obigen Tastenkombinationen in den Unterbrechungsmodus versetzt, da das Makro die Ausführung anhält und die aktuelle Aufgabe sofort beendet. Dies ist ein Ersatz für Schritt 2.

  1. Lösung: Um die Einschränkung der Verwendung von Antwort 1 und Antwort 2 zu überwinden, verwende ich xlErrorHandler zusammen mit der Anweisung Resume im Fehlerbehandlungsprogramm, wenn der Fehlercode 18 lautet. Anschließend wird der Interrupt als Fehler an die ausgeführte Prozedur gesendet, der von einem Fehlerbehandlungsprogramm abgefangen werden kann, das mit einer On Error GoTo-Anweisung eingerichtet wurde. Der auffangbare Fehlercode ist 18. Die aktuelle Prozedur wird unterbrochen, und der Benutzer kann die Prozedur debuggen oder beenden. Microsoft weist Sie darauf hin, dass dies nicht verwendet wird, wenn Ihre Fehlerbehandlungsroutine die Anweisung resume hat, andernfalls kehrt Ihre Fehlerbehandlungsroutine immer zur gleichen Anweisung zurück. Genau das wollen wir bei unerwünschten bedeutungslosen Unterbrechungen der Codeausführung.

1
jainashish

Mein derzeitiger Ruf erlaubt es noch nicht, dies als Kommentar zu posten. Stans Lösung, um in den Debug-Modus zu gelangen, drücken Sie zweimal Strg + Pause, spielen Sie weiter, speichern hat mein Problem gelöst, aber ich habe zwei unerwartete Wendungen:

  1. Meine Projektstruktur ist durch ein Passwort geschützt. Um in den Debug-Modus zu gelangen, musste ich zunächst in den Entwicklermodus wechseln, auf die Projektstruktur klicken und das Passwort eingeben.

  2. Mein Projekt ist eine Vorlagendatei (.xmtl). Ich habe die Datei mit einem Doppelklick geöffnet, der sie als .xml mit einer "1" am Ende des vorherigen Dateinamens öffnet. Ich habe den Fehler wie durch Stans Anweisung behoben und als 1.xml-Datei gespeichert. Als ich dann die Vorlage wieder öffnete, diesmal als Vorlage, und den gleichen Bugfix auf diese Datei anwenden wollten, war der Fehler weg! Ich habe diese Datei nicht geändert und immer noch keinen Fehler bei der Ausführung des Makros. Dies bedeutet für mich, dass der Fehler nicht in der Datei, sondern in einer (versteckten) Einstellung in Excel enthalten ist.

0
blablubbb