PR

Access VBA|エラーハンドリングの基本をやさしく解説!

Access
スポンサーリンク
スポンサーリンク

こんにちは、なかぜんです。AccessでVBAを使っていると、思わぬところでエラーが出て「えっ、何これ?」って戸惑うこと、ありますよね。

今回は、そんなときのための「エラーハンドリング」の基本について、初心者の方にもわかりやすく解説していきます。

エラー処理を覚えると、「突然止まる」「意味不明なメッセージ」から解放され、スムーズに開発が進むようになりますよ!

スポンサーリンク

エラーハンドリングとは?

「エラーハンドリング」とは、プログラム実行中に発生するエラーを適切に処理することです。たとえば、存在しないファイルを開こうとしたり、0で割ったりするとエラーになりますよね。

そんな時に、VBAではOn Errorステートメントを使って、エラーが起きてもプログラムを止めずに処理を続けたり、ユーザーにわかりやすいメッセージを表示したりできます。

基本の書き方:On Error GoTo

コード例

Sub SampleProcedure()
    On Error GoTo ErrorHandler

    Dim x As Integer
    Dim y As Integer
    Dim z As Double

    x = 10
    y = 0
    z = x / y  ' ここでエラー発生(ゼロ除算)

    MsgBox "計算結果:" & z
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & Err.Description, vbExclamation
End Sub

ポイント解説

  • On Error GoTo ErrorHandler:エラーが発生したらErrorHandler:ラベルに飛ぶように指示します。
  • Err.Description:発生したエラーの内容をテキストで取得できます。
  • Exit Sub:正常に処理が終わった場合、エラーハンドラに飛ばないようにします。

注意点やよくあるミス

  • Exit Subを忘れると、正常時でもエラーハンドラが実行されるので注意!
  • 複数のOn Errorがある場合は、最後に設定されたものだけが有効になります。
  • エラー処理後にResumeなどで処理を再開する場合、無限ループに陥らないよう工夫しましょう。

中級者向け:Resumeの使い分け

Resumeにはいくつかの使い方があります。

Resume(同じ行に戻る)

Resume

エラーが出た同じ行から再実行します。

Resume Next(次の行から再開)

Resume Next

エラーの発生した次の行から再開します。

Resume ラベル名(指定位置にジャンプ)

Resume 再開位置

指定したラベルから再開できます。

応用テクニック:ログ記録に応用する

業務で役立つのが、「エラー内容をログに残す」テクニックです。

Sub LogErrorSample()
    On Error GoTo ErrorHandler

    ' 何かの処理
    Open "C:\存在しないファイル.txt" For Input As #1

    Exit Sub

ErrorHandler:
    Dim f As Integer
    f = FreeFile
    Open "C:\error_log.txt" For Append As #f
    Print #f, Now & " エラー:" & Err.Number & " - " & Err.Description
    Close #f
    MsgBox "エラーが発生しました。ログを確認してください。", vbExclamation
End Sub

まとめ:まずはOn Error GoToから始めよう

Access VBAのエラーハンドリングは、慣れればとても心強い機能です。

今回のまとめです:

  • 「On Error GoTo」でエラー時の処理を指定できる
  • 「Errオブジェクト」でエラーの詳細が取得できる
  • ログを残すことで、トラブルの再発防止にもつながる

まずは簡単なプロシージャで「On Error」を試してみてくださいね!

次のステップ:複数条件の抽出クエリ作成テクニック

次回は、「複数条件の抽出クエリ作成テクニック」について紹介する予定です。

お楽しみに!

楽天Kobo電子書籍ストア
¥1,760 (2025/05/01 14:18時点 | 楽天市場調べ)