Excel VBA-Fehlerverwaltung

380
WestWindsDemon

Ich habe diesen Thread zur Fehlerbehandlung gelesen, aber wenn ich versuche, sogar ein einfaches Fehlerverwaltungsszenario zu replizieren, funktioniert es nicht. Ich versuche den folgenden modifizierten Code aus einem der Beispiele auszuführen:

Sub Example() Dim n As Variant  On Error GoTo nx  For i = 1 To 10 n = 1 / 0 'this WILL cause an error. label1: Next i  Exit Sub  nx: n = 5 Resume label1  End Sub 

Der Code sieht gut aus, aber wenn ich ihn tatsächlich ausführen, bekomme ich run-time error 11: division by zeroein Popup-Fenster.

Kann mir jemand helfen, das zu verstehen oder mich in die richtige Richtung weisen?

0
Wie bei Richard läuft das gut für mich. Verwenden Sie die Direktive 'Option Explicit'? Es wird Fehler für nicht deklarierte Variablen auslösen, was zur Beseitigung von Fehlern aufgrund von tpyos beiträgt. Sie werden auch dazu gezwungen, alle Variablen zu deklarieren, was wahrscheinlich ohnehin eine gute Sache ist. https://msdn.microsoft.com/de-de/vba/language-reference-vba/articles/option-explicit-statement Yorik vor 5 Jahren 0

3 Antworten auf die Frage

1
Richard

Der Code funktioniert gut für mich und wirft keine Fehler auf. Ich ging sogar mit dem Debugger Zeile für Zeile durch und nichts passierte.

Als Nebensache finde ich die folgende Alternative viel klarer zu verstehen:

Sub Example()  Dim n As Variant  On Error Resume Next  For i = 1 To 10 n = 1 / 0 'this WILL cause an error. If Err.Number <> 0 Then n = 5 Next i  On Error GoTo 0  End Sub 

Dies ist jedoch nur eine persönliche Präferenz.

Ich habe gerade versucht, Ihren Code auszuführen, der gleiche Fehler taucht immer wieder in dieser Zeile auf: `n = 1/0 ', dies wird einen Fehler verursachen.` WestWindsDemon vor 5 Jahren 0
Das ist seltsam. Für mich bedeutet "On Error Resume Next", dass nach "n = 1/0" kein Fehler angezeigt wird, aber "Err.Number" jetzt "11" (Division durch Null) ist. Als Ergebnis ist `Err.Number <> 0` wahr, also wird 'n' auf '5' gesetzt und der Code setzt die Schleife fort. Möglicherweise möchten Sie versuchen, Excel erneut zu installieren. Richard vor 5 Jahren 1
Dies ist ein Arbeitscomputer, daher bin ich nicht ganz sicher, ob es sich hierbei um ein implementiertes Feature oder einen Umbruch handelt ... Es macht mich immer noch frustriert, weil ich für die Weiterentwicklung und das Schreiben meines Codes nur mit Fehlern und Ausnahmen effektiv umgehen kann. Ich habe gerade eine E-Mail an meine IT-Kollegen geschickt, mal sehen, was sie sagen. WestWindsDemon vor 5 Jahren 0
0
WestWindsDemon

Ich habe endlich herausgefunden, was das Problem war, als ich diesen Thread las . Im Optionsmenü wurden meine Einstellungen standardmäßig auf "Fehler bei allen Fehlern" anstelle von "Fehler bei unbehandelten Fehlern" gesetzt. Einfach genug zu beheben, aber ich habe immer noch ein anderes Problem mit meiner Excel-Instanz, die mit jeder Instanz bricht err.[arg]. Ich bekomme eine Compile error: Expected Function or Variable. Kann mir jemand dabei helfen?

Super User ist kein Forum, in dem Sie einem Thread neue Fragen hinzufügen können. Eine neue Frage gehört zu einer neuen Frage. Bearbeiten Sie diese Antwort, um die zusätzliche Frage zu entfernen. Bitte geben Sie in Ihrer neuen Frage einen Link zu dieser verwandten Frage an. robinCTS vor 5 Jahren 0
-1
cybernetic.nomad

Ihr Code fängt den Fehler auf und läuft dann einfach weiter. Versuchen Sie es so und vielleicht werden Sie ein bisschen besser sehen, was damit passiert:

Sub Example() Dim n As Variant  On Error GoTo nx  For i = 1 To 10 n = 1 / 0 'this WILL cause an error. label1: Next i  Debug.print "loop done"  Exit Sub  nx: Debug.print "error called", i n = 5 Resume label1  End Sub 
Ich habe es ausprobiert, das gleiche Fehler-Pop-Up kam von der beleidigenden Zeile. Ich fange an zu denken, dass es irgendwie meine Exzellenz ist, aber ich bin mir nicht ganz sicher. WestWindsDemon vor 5 Jahren 0