
Excel 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 しないと、以後のエラーが検知されないことがある
「日頃から本サイトを閲覧いただいているお客様だけに、
【無料】EXCEL VBA コードショートカット集をご紹介させていただきます。
きっと気に入っていただけると思います」
入力チェック+例外処理(フォームモジュール)
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 コードショートカット集をご紹介させていただきます。
きっと気に入っていただけると思います」