Resume (Sprungmarke) Resume Next
So ganz alle Resume Kombinationen habe ich nun nicht in der Überschrift drinne, aber die können Sie sich dann auch selbst zusammenbauen. Hauptsache Resume!
Resume
Bleiben wir bei unserem Beispiel aus dem Vorkapitel.
Es gibt Situationen, fragen Sie mich bitte nicht welche, in denen man auf einen Fehler in der Art reagieren will, dass man einen Wert oder Zugriff ändert und dann mit dem Code an der gleichen Stelle fortfahren will, wo der Fehler produziert wurde.
Beispiel:
Public Sub ResumeResume()
Dim i As Long, k As Long
On Error GoTo Fehler
i = 4 / k
MsgBox i
Exit Sub
Fehler:
k = 2
Resume
End Sub
Hier haben wir eine Fehlerbehandlung.
Unser Code löst den Fehler Division durch 0 aus.
In unserer Fehlerbehandlung setzen wir den k Wert auf 2 und sagen VBA, dass es mit die fehlerproduzierende Anweisung wieder ausführen soll. (
Resume)
Seien Sie sich aber sicher, dass Sie durch diese Anweisung wirklich den Fehler aufheben.
Ganz Mutige können mal k = 0 schreiben, sollten aber mit STRG+Pause vertraut sein (Es wird eine Endlosschleife produziert)
Resume Next
Public Sub ResumeResume()
Dim i As Long, k As Long
On Error GoTo Fehler
i = 4 / k
MsgBox i
Exit Sub
Fehler:
Resume Next
End Sub
Dies ist einfach zu erklären!
Resume Next bedeutet hier einfach, VBA soll mit der nächsten Anweisung fortfahren, die nach der Anweisung kommt, die den Fehler produziert hat.
Resume Sprungmarke
Public Sub ResumeResume()
Dim i As Long, k As Long
On Error GoTo Fehler
i = 4 / k
MsgBox i
ResumeSprung: MsgBox ("Ich bin auch da")
Exit Sub
Fehler:
Resume ResumeSprung
End Sub
Hey, dass ist ja auch einfach - oder???
Dies ist im Prinzip wie On Error GoTo Sprungmarke.
Klar - ist doch klar. Wenn nicht, mal irgendwie resumen oder so oder wie.
Bis zum nächsten Kapitel.