strico Geschrieben 4. April 2008 Geschrieben 4. April 2008 Hallo, kann mir einer erklären, warum die zweite Prüfung den Fehler trotzdem wirft und NICHT zu ENDE2 springt? Vielen Dank Private Sub TEST() On Error GoTo ENDE If Not CBool("TEST") Then Exit Sub End If ENDE: On Error GoTo ENDE2 If Not CBool("TEST2") Then Exit Sub End If ENDE2: End Sub Zitieren
MartinSt Geschrieben 4. April 2008 Geschrieben 4. April 2008 verrätst du uns auch mal welcher fehler geworfen wird ? Zitieren
Amstelchen Geschrieben 4. April 2008 Geschrieben 4. April 2008 warum die zweite Prüfung den Fehler trotzdem wirft und NICHT zu ENDE2 springt? das ist "by design". wenn der zweite error geworfen wird, ist der erste errorhandler noch aktiv, demzufolge kann schon aus prinzip der zweite error nicht behandelt werden. dein code ist IMO schlechtes design. s'Amstel Zitieren
strico Geschrieben 5. April 2008 Autor Geschrieben 5. April 2008 Laufzeitfehler 13 (Typen unverträglich) kommt. Das mit dem schlechten Design ist schon klar. Mir gehts hier um die Theorie. Ich würde gern verstehen, was da im Hintergrund passiert. Was heißt Fehler noch aktiv? Wenn ich Err.Clear aufrufe, tritt beim zweiten Mal der Fehler immer noch auf. Oder anders: Wie deaktiviere ich dann den Fehler? (Geht das nur über Resume?) DANKE Zitieren
Amstelchen Geschrieben 5. April 2008 Geschrieben 5. April 2008 Laufzeitfehler 13 (Typen unverträglich) kommt. das erscheint logisch, ein CBool auf einen String macht IMO keinen sinn. Die CBool-Funktion wandelt einen Ausdruck in den Datentyp Boolean um. Der Ausdruck muß dabei als numerischer Wert interpretiert werden können, sonst tritt ein Laufzeitfehler auf. Ist der Wert 0, dann wird False zurückgegeben, andernfalls True. Geht das nur über Resume? AFAIR ja. der errorhandler ist insofern noch aktiv, als dass du u.u. zwar Err.Clear aufrufst, der interpreter aber noch immer nach der marke ENDE steht. erst wenn mit resume die fehlerbehandlung beendet wird, können weitere fehler behandelt werden. s'Amstel Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.