【Access VBA】エラー処理とは?|On Errorの使い方を解説

Access VBAで開発していると、
- 実行時エラーで止まる
- 突然デバッグ画面になる
- ユーザーにエラー内容を見せたくない
という場面がよくあります。
特に初心者は、「実行時エラー ‘〇〇’」が表示されると、どう対処すればいいかわからなくなりがちです。
そこで重要になるのが、エラー処理です。
この記事では、Access VBA初心者向けにエラー処理の基本をやさしく解説します。
Access VBAのエラー処理とは?
結論からいうと、エラー処理とは、エラー発生時の動きを制御する仕組みのことです。
VBAでは、通常エラーが発生すると処理が停止します。
例えば、次のような処理でエラーになります。
- 存在しないテーブルを開く
- Nullデータを処理する
- 型が一致しない
エラー処理を入れることで、次のようなことができるようになります。
- メッセージ表示
- 安全に終了
- ログ保存
- 後続処理継続

基本的なエラー処理
最も基本となる書き方です。
サンプルコード
Sub Sample()
On Error GoTo ErrHandler
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_社員")
MsgBox "正常終了"
rs.Close
Set rs = Nothing
Exit Sub
ErrHandler:
MsgBox "エラーが発生しました"
End Subコードの目的
エラー発生時に専用処理へ移動しています。
1行ずつ解説
On Error GoTo ErrHandlerまず上記のVBAで、エラー時はErrHandlerへ移動という設定をしています。
もし途中でエラーになると、
ErrHandler:以降の処理が実行されます。
今回は、次のようにメッセージを表示しています。
MsgBox "エラーが発生しました"Exit Subが重要
初心者が忘れやすいポイントです。Exit Subがないと、正常終了時でもErrHandlerへ進んでしまいます。
実務ではかなり重要です。
On Error Resume Nextとの違い
VBAにはもう1つ有名なエラー処理があります。
Resume Nextのサンプル
On Error Resume Nextこれは、エラーが出ても次の処理へ進むという意味です。
GoToとの違い
| 書き方 | 動き |
|---|---|
| On Error GoTo | エラー時に専用処理へ移動 |
| On Error Resume Next | エラーを無視して続行 |
Resume Nextは乱用注意
初心者がやりがちなミスです。
Resume Nextを多用すると、次のようなミスが起きることもあります。
- エラー原因が見えない
- 不具合に気づけない
- データ不整合が起きる
実務では必要最小限で使います。
実務でよくあるエラー処理の使い方
実務では単純なMsgBoxだけでなく、エラー内容を表示するケースが多いです。
Err.Numberを使う
MsgBox Err.NumberErr.Numberでエラー番号を取得できます。
Err.Descriptionを使う
MsgBox Err.DescriptionErr.Descriptionでエラー内容を取得できます。
実務向けサンプル
Sub Sample()
On Error GoTo ErrHandler
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_社員")
rs.Close
Set rs = Nothing
Exit Sub
ErrHandler:
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラー内容:" & Err.Description
End Sub実務ではこの形をよく使います。
Close処理も重要
エラー発生時でも、
rs.Close
Set rs = Nothingを適切に行うことが重要です。
Accessはオブジェクト解放忘れで不安定になることがあります。
実務での注意点とまとめ
Access VBAのエラー処理は、実務では必須レベルの重要機能です。
| 用途 | おすすめ |
|---|---|
| 通常処理 | On Error GoTo |
| 限定的な無視 | Resume Next |
エラー処理は表のように使い分けることが多いです。
エラー処理を理解できると、Access VBAの実務開発がかなり安定するようになります。
コメント