
「マクロを実行したらエラーで止まった…」
「“型が一致しません”とか“インデックスが有効ではありません”って出ても、どこを直せばいいのか分からないよ…」



そんな悩み、エラー処理を入れておけば落ち着いて対処できます!
結論:On Error
を使えば、エラーが出てもマクロを止めずに処理を続けられる!
目次
On Errorとは?【基本構文】
VBAでは実行中にエラーが起きると、強制終了してしまうことがあります。On Error
を使えば、そのエラーに対して柔軟に対応できます。
主な構文は次の2つです:
On Error Resume Next ' エラーが起きても無視して次の行へ On Error GoTo ラベル名 ' エラーが起きたら指定したラベルにジャンプ
On Error Resume Nextの使い方
On Error Resume Next Dim result As Double result = 10 / 0 ' ゼロ除算 → エラーだがスキップされる MsgBox "処理が続行されました"



軽微なエラーを無視して処理を続けたい場合に便利です。
On Error GoToの使い方
On Error GoTo エラー処理 Dim result As Double result = 10 / 0 ' ゼロ除算 MsgBox "この行は実行されません" Exit Sub エラー処理: MsgBox "エラーが発生しました"



エラー発生時に特定の処理へ飛ばしたい時に使います。
Errオブジェクトで詳細を確認する
On Error Resume Next Dim num As Double num = 1 / 0 If Err.Number <> 0 Then MsgBox "エラー番号:" & Err.Number & vbCrLf & "説明:" & Err.Description Err.Clear ' エラー情報をクリア End If



Err.Number
や Err.Description
を使えば、何のエラーか把握しやすくなります。
実務でよく使うエラー処理パターン
ファイルが存在しない時の処理
Dim wb As Workbook On Error Resume Next Set wb = Workbooks.Open("C:\存在しないファイル.xlsx") If wb Is Nothing Then MsgBox "ファイルが見つかりません" End If On Error GoTo 0
セルの値を数値変換して失敗する場合
Dim value As Double On Error Resume Next value = CDbl(Cells(1, 1).Value) If Err.Number <> 0 Then MsgBox "数値に変換できませんでした" Err.Clear End If
エラー処理を解除する:On Error GoTo 0
On Error Resume Next ' エラー処理を使う処理… On Error GoTo 0 ' エラー処理を解除(以後は通常通り止まる)
エラー処理を使う時の注意点
注意点 | 内容 |
---|---|
エラーを無視しすぎない | On Error Resume Next を多用しすぎると、不具合の原因が分かりづらくなります |
Err.Clear を忘れない | 連続した処理でエラー情報が残っていると、誤判定のもとになります |
必ず On Error GoTo 0 で解除する | エラー処理のスコープを明確にしましょう |
まとめ
項目 | ポイント |
---|---|
On Error Resume Next | エラーを無視して処理を継続 |
On Error GoTo ラベル | エラー時に特定の処理へ移動 |
Err.Number / Err.Description | エラーの内容を把握する |
On Error GoTo 0 | エラー処理の解除 |
コメント