Veröffentlicht 4. April 200817 j 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
4. April 200817 j 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
5. April 200817 j 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
5. April 200817 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.