vba Errorhandling

    • Allgemein

    Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von exnoport.

      vba Errorhandling

      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.

      Visual Basic-Quellcode

      1. Public Sub Sub_Vorlage()
      2. '**********************
      3. Dim ErrorText As String
      4. ErrorText = vbNullString
      5. On Error GoTo Catch
      6. '**********************
      7. 'If Fehler Then ErrorText = "Fehlermeldung": GoTo Catch
      8. 'Code hier
      9. '**********************
      10. GoTo Finaly
      11. Catch:
      12. Errorhandler Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, 0), Application.VBE.ActiveCodePane.CodeModule.Parent.Name, ErrorText
      13. Finaly:
      14. ClearClipboard
      15. '**********************
      16. End Sub
      17. Public Function Function_Vorlage() As Boolean
      18. 'Standardrückgabewert setzen
      19. Function_Vorlage = True
      20. '**********************
      21. Dim ErrorText As String
      22. ErrorText = vbNullString
      23. On Error GoTo Catch
      24. '**********************
      25. 'If Fehler Then ErrorText = "Fehlermeldung": GoTo Catch
      26. 'Code hier
      27. '**********************
      28. GoTo Finaly
      29. Catch:
      30. 'Fehlerrückgabewert setzen
      31. Function_Vorlage = False
      32. Errorhandler Application.VBE.ActiveCodePane.CodeModule.ProcOfLine(Application.VBE.ActiveCodePane.TopLine, 0), Application.VBE.ActiveCodePane.CodeModule.Parent.Name, ErrorText
      33. Finaly:
      34. 'alle nicht mehr benötigten Objekte entladen
      35. 'set IrgeneinObject = nothing
      36. 'Zwischenspeicher leeren
      37. ClearClipboard
      38. '**********************
      39. End Function
      40. Public Sub Errorhandler(ByVal procName As String, ByVal moduleName As String, ByVal extraError As String)
      41. MsgBox IIf(Not extraError = vbNullString, extraError & ", ", vbNullString) & IIf(Err > 0, Err.Description & ", ", vbNullString) & "Fehler in " & procName & " in " & moduleName
      42. End Sub
      43. Public Sub ClearClipboard()
      44. OpenClipboard 0&
      45. EmptyClipboard
      46. CloseClipboard
      47. End Sub
      Ich würde empfehlen, das ClearClipboard rauszunehmen. Es gibt immerhin nichts nervigeres als ein Programm, welches ungefragt meine Zwischenablage leert.
      Besucht auch mein anderes Forum:
      Das Amateurfilm-Forum