ここでは、C# や JAVA のようなオブジェクト指向言語にある例外の発生と捕捉の VBA での実装例を掲載しています。
「VBA の弱点を多言語では「例外」として実装した」と言った方がいいのかもしれませんが。
スポンサーリンク
VBA による例外の発生と捕捉
VBA では、Try ~ Catche 構文は使用できませんが、On Error Goto ステートメントを使用してエラー(例外)の捕捉を行うことができます。また、サンプルのように、Err.Raise によってエラー(例外)を生成することができます。多言語では、throw で例外を発生させています。
詳細はサンプル内のコメントを参照ください。
Option Explicit Private Sub CommandButton1_Click() ' エラー時は、ErrorHandle ラベルへ飛ぶ On Error GoTo ErrorHandler ' 多言語で言う例外を発生させるようなもの ' エラー番号、エラーソース、エラーメッセージ Call Err.Raise(1234, Me.Name, "エラーだぞ。コノヤロー") ' エラーが前処理で発生したため、この位置の処理は行われない MsgBox "このメッセージダイアログが出力されることはない" ErrorHandler: ' エラー番号とエラメッセージを出力 MsgBox Err.Number & ":" & Err.Source & ":" & Err.Description ' エラーをクリアする Err.Clear End Sub
なお、出力されるエラーダイアログは、次のようになりました。