ExcelVBA プログラム中のエラーで止まらず安全に処理を続ける方法

 

Excel VBAで、例外処理はプログラム中にエラーが起きたとき、そのまま止まらず、安全に処理を続けたり、エラーメッセージを表示したりするために使います。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA エラーで止まらず安全に処理する|シーン

以下のシーンで利用します。

・ファイル操作
ファイルが見つからない、開けないなどの対処

・ユーザー入力
数値でない値が入力された場合の処理

・数式のエラー
0で割るなど計算エラーの回避

・外部接続
データベースやネットワーク接続での不具合処理

 

Excel VBA エラーで止まらず安全に処理するサンプルコード

基本の使い方

Option Explicit

Sub SampleErrorHandling()
    On Error GoTo ErrHandler  ' エラー発生時はErrHandlerへジャンプ

    Dim x As Integer
    x = 10 / 0  ' 故意に0で割るエラー

    MsgBox "計算成功:" & x
    Exit Sub  ' エラーがなければ終了

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

On Error GoTo ラベル名
エラーが発生したら指定のラベルへジャンプ

Err.Description
発生したエラーの内容(人間が読める)

Exit Sub
正常時の処理後に、エラーハンドラーを飛ばす

Err.Number
エラー番号(特定エラーの判定に使える)

注意点

・On Error Resume Nextは慎重に使う
エラーを無視して次の行へ行くため、バグの原因になることも

・On Error GoTo 0 で元に戻す
一度設定したエラートラップは明示的に解除が必要

・エラー処理後に Resume しないと、以後のエラーが検知されないことがある

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

入力チェック+例外処理(フォームモジュール)

Option Explicit

Private Sub CommandButton1_Click()
    On Error GoTo ErrorHandler

    Dim userInput As Double
    userInput = CDbl(TextBox1.Value)  ' 数値でないとエラー

    MsgBox "入力された数値:" & userInput
    Exit Sub

ErrorHandler:
    MsgBox "数値を入力してください!", vbCritical
End Sub

 

Excel VBA エラーで止まらず安全に処理するまとめ

・エラー処理は「プログラムが止まらずに安全に動くため」の保険

・On Error GoTo ラベル が基本形

・Err.Description や Err.Number でエラー内容を取得

・無視するだけの Resume Next は使い所を選ぶ

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問