Ich habe VBA in Excel für eine Weile verwendet, und ich verwende einen benutzerdefinierten Fehlerhandler für alle meine Verfahren. Ich finde mich zum ersten Mal in der Position, Err.Raise
zu verwenden (mit einer Case Else
Situation in einem Select Case
Block umzugehen), und ich kann nicht herausfinden, wie der Fehler an den benutzerdefinierten Fehlerhandler übergeben. Anstatt den erhöhten Fehler an den benutzerdefinierten Handler zu übergeben, öffnet VBA seinen eigenen hässlichen und ziemlich nutzlosen Fehlerdialog. Wenn mir jemand einen Weg geben könnte, dies zu umgehen, wäre ich sehr dankbar.Wie übergebe ich einen erhöhten Fehler an einen benutzerdefinierten Fehlerhandler in VBA?
Unten ist eine generische Version des Codes, den ich verwende (Funktion/Variablennamen wurden geändert, um die Unschuldigen zu schützen). Das gErrorHandler
-Objekt ist eine global dimensionierte Klassenmodulvariable, die Fehler von allen Prozeduren behandelt.
Public Function MyFunction(dblInputParameter As Double) As Double
On Error GoTo Err_MyFunction
Dim dblResult as Double
Select Case dblInputParameter
...Several case statements go here...
Case Else
Err.Raise vbObjectError + 1000, "MyProjectName.MyObjectName", "Error Description"
End Select
MyFunction = dblResult
Exit_MyFunction:
Exit Function
Err_MyFunction:
gErrorHandler.DisplayError Err.Number, Err.Description, Erl, csModule, "basMyModuleName", "MyFunction"
Resume Exit_MyFunction
End Function
Und hier ist der Fehlerdialog ich stattdessen den Fehler an den benutzerdefinierten Handler übergeben zu haben:
Funktioniert für mich. Es kann sein, dass Sie "Pause auf alle Fehler" in der VBE eingestellt haben unter Extras >> Optionen >> Registerkarte Allgemein –
Das war es. Danke Tim. – Lokerim