Nach dem, was ich im Internet sehen kann, ist dies eine ziemlich häufige Beschwerde, aber Antworten scheinen seltener zu sein. Das Problem ist folgendes:
Wir haben eine Reihe von Excel VBA-Apps, die auf mehreren Computern der Benutzer perfekt funktionieren. Auf einem Computer halten sie jedoch in bestimmten Codezeilen an. Es sind immer die gleichen Linien, aber diese Linien scheinen nichts miteinander zu tun zu haben.
Wenn Sie nach dem Anhalten F5 (Ausführen) drücken, wird die App fortgesetzt, sodass fast ein Haltepunkt hinzugefügt wurde. Wir haben versucht, "Alle Pausen entfernen" aus dem Menü auszuwählen und sogar eine Pause hinzuzufügen und wieder zu entfernen.
Wir hatten dieses Problem bereits mit einzelnen Apps und haben es durch Ausschneiden von Code aus Modulen, Kompilieren und anschließendes Einfügen von Code usw. "verkürzt".
Das Problem scheint sich nun eher auf Excel selbst als auf eine einzelne XLS-Datei zu beziehen, daher sind wir uns nicht sicher, wie wir dies verwalten sollen.
Jede Hilfe wäre dankbar :)
Vielen Dank,
Philip Whittington
Antworten:
Ich habe eine 2. Lösung gefunden.
Hoffe das hilft jemandem.
quelle
Dieses Problem ist auf eine merkwürdige Eigenart in Office / Windows zurückzuführen.
Nachdem ich in den letzten Tagen denselben VBA-Code entwickelt und hunderte Male (buchstäblich) ausgeführt hatte, stieß ich gerade auf dieses Problem. Das einzige, was anders war, ist, dass ich kurz vor dem Auftreten dieses verwirrenden Problems versehentlich die Ausführung des VBA-Codes mit einer unorthodoxen Methode beendet habe.
Ich habe alle temporären Dateien bereinigt, neu gestartet usw. Als ich den Code nach all dem erneut ausführte, bekam ich immer noch das Problem - bevor ich in die erste Schleife eintrat. Es ist sinnvoll, im Popup die Taste "Debug" zu drücken, dann zweimal [Strg + Pause] zu drücken und danach ohne Unterbrechung fortzufahren ", da etwas in der Kombination von Office / Windows die Ausführung nicht freigegeben hat. Es klemmt.
Die redundante Aktion Strg + Pause löst wahrscheinlich die verbleibende Ausführung auf.
quelle
Eine Lösung ist hier :
Nachdem ich diese Codezeile eingefügt hatte, konnte ich Strg + Pause nicht mehr verwenden. So funktioniert es aber nicht sehr.
quelle
xlInterrupt
. (Es wird auch automatisch wieder aktiviert, wenn die Codeausführung abgeschlossen ist.) Ihre andere Antwort hat bei mir funktioniert, aber im schlimmsten Fall kann dies als vorübergehende Korrektur verwendet werden. Weitere Informationen zu Application.EnableCancelKeyIch habe festgestellt, dass das Problem durch Drücken von Strg + Pause behoben wurde, während das Makro nicht ausgeführt wurde.
quelle
Ich würde die üblichen Abhilfemaßnahmen ausprobieren: - Führen Sie Rob Boveys VBA Code Cleaner auf Ihrem VBA-Code aus - Entfernen Sie alle Add-Ins auf dem PC des Benutzers, insbesondere COM- und .NET-Add-Ins. - Löschen Sie alle EXD-Dateien des Benutzers (MSoft Update-Inkompatibilitäten). - Führen Sie Excel aus Auf dem Benutzersystem erkennen und reparieren - Überprüfen Sie die Größe der XLB-Datei des Benutzers (sollte 20 bis 30 KB betragen). Starten Sie das System neu und löschen Sie alle temporären Dateien des Benutzers
quelle
Vielen Dank an alle für ihre Beiträge. Dieses Problem wurde durch Auswahl von REPAIR in der Systemsteuerung behoben. Ich denke, dies registriert einige der nativen COM-Komponenten von Office explizit neu und führt Dinge aus, die REINSTALL nicht tut. Ich gehe davon aus, dass Letzterer nur eine Checkliste durchläuft und manchmal akzeptiert, was vorhanden ist, wenn es möglicherweise bereits installiert ist. Ich hatte dann ein separates 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 weiß das wirklich zu schätzen.
quelle
Ich bin bei der Entwicklung einer komplexen Excel VBA-App einige Male auf dieses Problem gestoßen. Manchmal begann Excel, VBA-Objekte ganz zufällig zu beschädigen. Und das einzige Mittel war, die Maschine neu zu starten. Nach dem Neustart begann Excel normalerweise normal zu handeln.
Bald habe ich 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.
quelle
Ich hatte dieses Problem auch bei der Verwendung von Excel 2007 mit einer Arbeitsmappe foobar.xlsm (Makro aktiviert), bei der die Meldung "Codeausführung wurde unterbrochen" angezeigt wurde, indem einfach versucht wurde, die Arbeitsmappe auf dem roten X in der rechten Ecke zu schließen, ohne dass Makros ausgeführt wurden alle oder alle "Initialisierungs" -Makros für Formulare, Arbeitsmappen oder Arbeitsblätter. Die Optionen, die ich bekam, waren "Ende" oder "Weiter", Debug war immer ausgegraut. Ich habe wie in einem vorherigen Poster vorgeschlagen, Systemsteuerung-> Programme und Funktionen-> Rechtsklick auf "Microsoft Office Proffesional 2007" (in meinem Fall) -> Ändern-> Reparieren.
Dies löste das Problem für mich. Ich könnte hinzufügen, dass dies kurz nach einem MS-Update passiert ist, und ich habe auch ein Add-In in Excel namens "Team Foundation" von Microsoft gefunden, das ich sicherlich nicht freiwillig installiert habe
quelle
Ich möchte aus folgenden Gründen weitere Details zu Stans Antwort Nr. 2 hinzufügen :
Ich habe mich mehr als ein Dutzend Mal mit diesem Problem befasst und je nach Projektbedingungen zwischen Stans Voodoo-Magie-Antwort Nr. 1 oder Nr. 2 gewählt. Als ich mich immer wieder damit auseinandersetzte, wurde ich fragender, warum es überhaupt passiert.
Ich möchte auch eine Antwort für Mac-Benutzer hinzufügen.
Bei beiden möglichen Antworten gibt es Einschränkungen:
Dies kann aus einem der folgenden Gründe geschehen:
Betriebssystem, das dem Excel-Prozess keine Systemressourcen zuweist. ( Lösung: Man muss nur das Betriebssystem starten - die Erfolgsquote ist sehr niedrig, aber es ist bekannt, dass sie viele Male funktioniert.)
P-Code ist der Zwischencode, der in Visual Basic (vor .NET) verwendet wurde und daher weiterhin in der VBA verwendet wird. 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 nur aufgrund der Installation der Software (Excel) irgendwo beschädigt wurde. Wenn der P-Code beschädigt. Die Codeausführung wird immer wieder unterbrochen. Lösung: In diesen Fällen wird davon ausgegangen, dass Ihr Code beschädigt wurde, und es besteht die Möglichkeit, dass Ihre Excel-Arbeitsmappe in Zukunft ebenfalls beschädigt wird und Meldungen wie "Excel-Datei beschädigt und kann nicht geöffnet werden" angezeigt werden. Daher können Sie sich als schnelle Lösung auf Antwort 1 oder Antwort 2 gemäß Ihren Anforderungen verlassen. Ignorieren Sie jedoch niemals die Anzeichen von Korruption. Es ist besser, Ihre Codemodule in den Editor zu kopieren, die Module zu löschen, die Arbeitsmappe zu speichern und zu schließen und das Excel zu schließen. Öffnen Sie nun die Arbeitsmappe erneut und erstellen Sie neue Module mit dem zuvor in den Editor kopierten Code.
Probieren Sie für Mac-Benutzer eine der folgenden Optionen aus, die je nach Systemarchitektur, dh Betriebssystem und Office-Version, auf jeden Fall funktionieren
Sie werden mit den oben genannten Tastenkombinationen in den Unterbrechungsmodus versetzt, da das Makro die Ausführung unterbricht und die aktuelle Aufgabe sofort beendet. Dies ist der Ersatz von Schritt 2.
xlErrorHandler
zusammen mit derResume
Anweisung im Fehlerhandler, wenn der Fehlercode 18 ist. Anschließend wird der Interrupt als Fehler an die laufende Prozedur gesendet, der durch einen Fehler abgefangen werden kann Handler, der mit einer On Error GoTo-Anweisung eingerichtet wurde. Der überfüllbare Fehlercode ist 18. Die aktuelle Prozedur wird unterbrochen, und der Benutzer kann die Prozedur debuggen oder beenden. Microsoft weist darauf hin, dass dies nicht verwendet wird, wenn Ihr Fehlerbehandler über eine Wiederaufnahme-Anweisung verfügt. Andernfalls kehrt Ihr Fehlerbehandler immer zur gleichen Anweisung zurück. Genau das wollen wir bei unerwünschten bedeutungslosen Unterbrechungen der Codeausführung.quelle
Mein aktueller Ruf erlaubt es noch nicht, dies als Kommentar zu posten. Stans Lösung zum Aufrufen des Debug-Modus, zweimaliges Drücken von Strg + Pause, Weiterspielen, Speichern hat mein Problem gelöst, aber ich habe zwei unerwartete Wendungen:
Meine Projektstruktur ist passwortgeschützt. Um in den Debug-Modus zu gelangen, musste ich zuerst in den Entwicklermodus wechseln, auf die Projektstruktur klicken und das Passwort eingeben.
Mein Projekt ist eine Vorlagendatei (.xmtl). Ich habe die Datei per Doppelklick geöffnet, wodurch sie als XML mit einer "1" am Ende des vorherigen Dateinamens geöffnet wird. Ich habe den Fehler wie durch Stans Anweisung behoben und als diese ... 1.xml Datei gespeichert. Als ich dann die Vorlage erneut öffnete, diesmal als Vorlage, und dieselbe Fehlerbehebung auf diese Datei anwenden wollte, war der Fehler verschwunden! Ich habe diese Datei nicht geändert und immer noch keinen Fehler beim Ausführen des Makros. Dies bedeutet für mich, dass sich der Fehler nicht in der Datei befindet, sondern in einer (versteckten) Einstellung in Excel.
quelle
Neu installieren und flicken :) Sonst ist es schwer zu sagen.
quelle