VBAの例外処理のサンプルです。Excel、Accessとも同じです。
目次
サンプル | 例外処理(On Error GoTo) |
呼出先のsubプロシージャで例外が発生した場合 | |
例外を無視する(On Error Resume Next) |
例外処理(On Error GoTo)
On Error GoTo 例外名 |
On Error GoToは、例外発生時、例外処理の箇所に処理がとびます。
Sub test1()
On Error GoTo Exception
Workbooks.Open ("D:\test11.xlsx")
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub
2行目は、On Error GoToがあります。例外発生時は、8行目に処理が飛びます。
4行目は、存在しないファイルを読みにいって例外が発生し8行目以下の処理が実行されます。
6行目のExit Subは、例外が発生しない場合に処理を終了します。Exit Subで抜けないとその下の8行目以下の処理が実行されてしまいます。
8行目以下は、例外発生時の処理が記述してあります。
Err.Numberは、エラー番号を表示します。
Err.Descriptionは、エラー文言を表示します。
以下は、Excelでファイルが存在しなかったときに表示される文言です。
呼出先のsubプロシージャで例外が発生した場合
呼出先のsubプロシージャ内で例外が発生しても呼び出し側で例外をキャッチできます。
Sub test1()
On Error GoTo Exception
Call openBook
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
MsgBox ("test") '表示される
End Sub
Sub openBook()
Workbooks.Open ("D:\test11.xlsx")
End Sub
4行目は、13行目を呼んでいます。
15行目で、存在しないファイルを開こうとして例外が発生したとします。
8行目以降が実行され、10行目は表示されます。
ファイルを閉じる処理がある場合は、例外処理の箇所にも入れておくと例外発生時でも閉じれます。
例外を無視する(On Error Resume Next)
On Error Resume Next |
On Error Resume Nextは、例外を無視します。
Sub test1()
On Error Resume Next
Workbooks.Open ("D:\test11.xlsx")
Exit Sub
Exception:
MsgBox Err.Number & vbCrLf & Err.Description
End Sub
4行目は、存在しないファイルを読みにいきますが、例外は無視されます。
6行目で処理は完了します。
関連の記事