【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.Number

Err.Numberでエラー番号を取得できます。

Err.Descriptionを使う

MsgBox Err.Description

Err.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の実務開発がかなり安定するようになります。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次