AW: Resume next....wohin positionieren
08.10.2020 15:17:08
Frank
Hallo STeve,
die Fehlerbehandlung von VBA ist schon iregendwie tückisch. Ich versuche es immer so einfach wie möglich zu halten. Das Problem in Deinem Script ist, dass der Fehler in den Subs textX ausgelöst wird und nicht in start. Ob und wie es in VBA möglich ist, dass der Fehler nach start »hochblubbert«, weiß ich nicht. (Aber vielleicht weiß es sonst jemand ich lerne gern dazu.)
Ein Lösung ist, On Error in den Subs textX zu setzen und in jedem der zugehörigen ErrorHandler ein Sub aufzurufen, das den Fehler in die Tabelle einträgt, und danach das Resume Next auszuführen.
Sub start()
test1
test2
test3
test4
End Sub
Private Sub FehlerSchreiben()
Dim aktBlatt As String
Dim WsTabelle As Worksheet
Dim BoVorhanden As Boolean
aktBlatt = ActiveSheet.Name
For Each WsTabelle In Sheets
If WsTabelle.Name = "Fehlerauslese" Then
BoVorhanden = True
End If
Next WsTabelle
If BoVorhanden = False Then
Sheets.Add.Name = "Fehlerauslese"
End If
ActiveWorkbook.Worksheets(aktBlatt).Activate
With ActiveWorkbook.Worksheets("Fehlerauslese")
Z = 2
Do While ActiveWorkbook.Worksheets("Fehlerauslese").Cells(Z, 2) ""
Z = Z + 1
Loop
.Cells(Z, 1) = "auf dem Tabellenblatt: " & aktBlatt
.Cells(Z, 2) = "Fehler Nr.: " & CStr(Err.Number)
.Cells(Z, 3) = Err.Description
.Cells(Z, 4) = "in Zeile : " & CStr(Erl)
.Cells(Z, 5) = Err.Source
' .Cells(Z, 6) = Err.Raise
With .Range("A:D")
.Columns.EntireColumn.AutoFit
End With
End With
End Sub
Private Sub test1()
ActiveWorkbook.Worksheets("Auswertung 1").Activate
On Error GoTo errorhandler
Debug.Print 1 / 0
MsgBox "OK_Fehler im Modul Test 1 _Auswertung 1 ausgelesen"
Exit Sub
errorhandler:
FehlerSchreiben
Resume Next
End Sub
' und genauso für die weiteren 3 test-Subs
Viele Grüße
Frank