2 Errorhandler möglich?
#1
Question 
hi,

ich habe gerade diese Errorhandler-Möglichkeit entdeckt: http://www.herber.de/mailing/vb/html/vastmonerror.htm

Bei diesem Code springt der Errorhandler aber erst gar nicht an:
Code:
Sub Errors()
On Error GoTo Errorhandler
Dim Dateiname As Stringz
Errorhandler:
MsgBox "Errorhandler"
End Sub

Und bei diesem Code(wo in A1 extra nichts steht, damit ein Error verusacht wird) springt er an. Jedoch stets nur Errorhandler2. Ich komme nie nach Errorhandler1:
Code:
Sub Errors2()
Dim Dateiname As String
On Error GoTo Errorhandler
Dateiname = Worksheets("Tabelle1").Range("A1").text
On Error GoTo Errorhandler2
Dateiname = Worksheets("Tabelle1").Range("A1").text
Errorhandler2:
MsgBox "Errorhandler2"
Exit Sub
Errorhandler:
MsgBox "Errorhandler"
Exit Sub
End Sub

Oder ist nur 1 Errorhandler möglich? Bezieht sich der Errorhandler immer auf die nächste Code-Zeile? Also wenn da ein Error passiert, dass dann der Errorhandler "anspringt"?

Die Datei mit dem Beispielcode:
.xlsm   #Errorhandler.xlsm (Größe: 48,69 KB / Downloads: 0)

lieben Dank

Julia :)
Antworten Top
#2
Hallo,

die Zuweisung einer leeren Zelle in eine String-Variable löst keinen Fehler aus, aber in einer Long-Variable knallst.

Code:
Sub Errors2()
Dim Dateiname As Long
On Error GoTo Errorhandler
Dateiname = Worksheets("Tabelle1").Range("A1").Text
On Error GoTo Errorhandler2
Dateiname = Worksheets("Tabelle1").Range("A1").Text
Errorhandler2:
MsgBox "Errorhandler2"
Exit Sub
Errorhandler:
MsgBox "Errorhandler"
Resume Next
'Exit Sub
End Sub

Peter Haserodt hat hier auch eine gute Erklärung zur Fehlerbehandlung geschrieben.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Antworten Top
#3
o.k., danke Steffl!

Was aber ist hier dran jetzt noch falsch? Warum gibt VBA beim 2. "Dateiname = Worksheets("Tabelle1").Range("A1").text" "Tpyen unverträglich" aus. Er sollte doch zu Errorhandler2 springen. Parallel zu dem "On Error GoTo mehrfach"-Beispiel: http://www.online-excel.de/excel/singsel_vba.php?f=145
Code:
Sub Errors2()
Dim Dateiname As Long
MsgBox "Vor Fehler 1"
On Error GoTo Errorhandler
Dateiname = Worksheets("Tabelle1").Range("A1").text
Exit Sub
Errorhandler:
MsgBox "Errorhandler " & vbCrLf & "Fehlernummer: " & Err.Number & _
    vbCrLf & "Fehlerbeschreibung: " & Err.Description
On Error GoTo Errorhandler2
Dateiname = Worksheets("Tabelle1").Range("A1").text
Exit Sub
Errorhandler2:
MsgBox "Errorhandler2" & vbCrLf & "Fehlernummer: " & Err.Number & _
    vbCrLf & "Fehlerbeschreibung: " & Err.Description
End Sub

Hier die Datei:
.xlsm   #Errorhandler.xlsm (Größe: 48,15 KB / Downloads: 2)

Julia :)
Antworten Top
#4
Hallo Julia,

ändere mal die Reihenfolge

Code:
Sub Errors2()
Dim Dateiname As Long
MsgBox "Vor Fehler 1"
On Error GoTo Errorhandler
Dateiname = Worksheets("Tabelle1").Range("A1").text
'Exit Sub
On Error GoTo Errorhandler2
Dateiname = Worksheets("Tabelle1").Range("A1").text
Exit Sub
Errorhandler:
MsgBox "Errorhandler " & vbCrLf & "Fehlernummer: " & Err.Number & _
    vbCrLf & "Fehlerbeschreibung: " & Err.Description

Resume Next

Errorhandler2:
MsgBox "Errorhandler2" & vbCrLf & "Fehlernummer: " & Err.Number & _
    vbCrLf & "Fehlerbeschreibung: " & Err.Description
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • o0Julia0o
Antworten Top
#5
Hallo,

ich wusste doch, dass Stefan etwas zum Lesen empfiehlt, zum Beispiel diese Seite: online-excel.de
Gruß Atilla
Antworten Top
#6
Hallo Atilla,

Das habe ich doch bereits getan. Schaue in meinen ersten Beitrag (nach dem Code).
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Hallo Stefan,

sag ich doch. :19: 

Schau noch mal nach.
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste