プロシージャ内でエラーが発生した場合のプログラム制御には、On Errorステートメントを使用しGotoステートメントによりエラー処理ルーチンにプログラム制御を移します。
On Error GoTo LABEL名
LABEL名:
エラー処理
エラーには実行時エラーと構文エラーとがあり、実行時エラーとはシステムで処理できない動作を実行しようとした場合に発生するエラーであり、構文エラーとは文法上の規則に違反した場合に発生するエラーで、プログラム実行前のコンパイル時に発生します。
エラーはErrオブジェクトを使用することにより、そのエラー内容を知ることができます。
オブジェクト名 | プロパティ | 内容 |
---|---|---|
Err | Number | エラー番号 |
Description | エラー番号に対応する文字列(エラー内容) | |
Source | 現在のプロジェクト名 | |
HelpFile | ヘルプファイル名 | |
HelpContext Number | ヘルプファイルに対応するコンテキスト番号 |
エラーが発生した場合プログラムが中断しますが、もし、プログラムを中断したくない場合はResume Nextステートメントを使用します。Resume Nextステートメントを使用するとエラーが発生した次のステートメントからプログラムが継続されます。
以下は、構文エラーが発生した場合のプログラム制御の簡単な例です。
Sub OnErrorTest()
On Error GoTo ErrorTrap
Dim i As Integer
i = "test" '←ココで構文エラーとなる。
MsgBox "終了します。"
Exit Sub
ErrorTrap:
MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description
MsgBox "ヘルプファイル名" & Err.HelpContext
MsgBox "プロジェクト名:" & Err.Source
Resume Next
End Sub