
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エキスパート」をご確認ください。