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

 

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

 

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

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 しないと、以後のエラーが検知されないことがある

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

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 は使い所を選ぶ

 

VBAマクロが書けるベースを作りたい方は、VBAエキスパート資格取得を挑戦してみてください。

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

下記から無料問題集ができます。

 

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。