私はしばらくの間、ExcelでVBAを使用していましたが、すべての手順でカスタムエラーハンドラを使用しています。私は初めてErr.Raise
(Select Case
ブロックのCase Else
の状況に対処する)を使用する必要があると感じています。カスタムエラーハンドラにエラーがどのように渡されるかわかりません。 VBAは、発生したエラーをカスタムハンドラに渡すのではなく、醜いかなり役に立たないエラーダイアログをポップアップします。誰かが私にこれを回避する方法を教えることができれば、私は非常に感謝するだろう。VBAのカスタムエラーハンドラに発生したエラーを渡すにはどうすればよいですか?
以下は私が使用しているコードの汎用バージョンです(関数/変数名が無実を保護するために変更されています)。 gErrorHandler
オブジェクトは、任意のプロシージャおよびすべてのプロシージャのエラーを処理する、グローバルにディメンション化されたクラス・モジュール変数です。
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
そして、ここで私は、カスタムハンドラに渡されるエラーを持つのではなく、取得エラーダイアログです:
Works for me。 VBEのTools >> options >> general tab –
で設定された "すべてのエラーで中断"があった可能性があります。ありがとう、Tim。 – Lokerim