ich habe mal das Try Catch für VBA nachgebaut, die Fehlermeldung spuckt Modul und Prozedur aus.
Sub_Vorlage für Sub's und Function_Vorlage für Funtionen.
Sub_Vorlage für Sub's und Function_Vorlage für Funtionen.
Visual Basic-Quellcode
- Public Sub Sub_Vorlage()
- '**********************
- Dim ErrorText As String
- ErrorText = vbNullString
- On Error GoTo Catch
- '**********************
- 'If Fehler Then ErrorText = "Fehlermeldung": GoTo Catch
- 'Code hier
- '**********************
- GoTo Finaly
- Catch:
- Errorhandler Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, 0), Application.VBE.ActiveCodePane.CodeModule.Parent.Name, ErrorText
- Finaly:
- ClearClipboard
- '**********************
- End Sub
- Public Function Function_Vorlage() As Boolean
- 'Standardrückgabewert setzen
- Function_Vorlage = True
- '**********************
- Dim ErrorText As String
- ErrorText = vbNullString
- On Error GoTo Catch
- '**********************
- 'If Fehler Then ErrorText = "Fehlermeldung": GoTo Catch
- 'Code hier
- '**********************
- GoTo Finaly
- Catch:
- 'Fehlerrückgabewert setzen
- Function_Vorlage = False
- Errorhandler Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, 0), Application.VBE.ActiveCodePane.CodeModule.Parent.Name, ErrorText
- Finaly:
- 'alle nicht mehr benötigten Objekte entladen
- 'set IrgeneinObject = nothing
- 'Zwischenspeicher leeren
- ClearClipboard
- '**********************
- End Function
- Public Sub Errorhandler(ByVal procName As String, ByVal moduleName As String, ByVal extraError As String)
- MsgBox IIf(Not extraError = vbNullString, extraError & ", ", vbNullString) & IIf(Err > 0, Err.Description & ", ", vbNullString) & "Fehler in " & procName & " in " & moduleName
- End Sub
- Public Sub ClearClipboard()
- OpenClipboard 0&
- EmptyClipboard
- CloseClipboard
- End Sub