エラー処理について

On Errorを使って、エラーが発生したときの処理を定義することができます。
型の不一致などでプログラムを停止させないようにエラー処理を記述する必要があります。

On Errorを指定すると、エラー時にメッセージを表示するなどの制御が可能になります。

エラー処理の定義

On Errorを使ったエラー処理には以下の3種類があります。

On Error Resume Next はエラーが発生しても無視して処理を続けます。
On Error Goto ラベル はエラーが発生すると、指定したラベルに処理を移します。
On Error Goto 0 はエラー処理を無効にします。エラーが発生した行で処理を中断します。

何も定義していない場合は、On Error Goto 0 が有効になっています。

On Error Resume Nextの例

On Error Resume Next

Dim i As Integer
i = "文字" ' 型の不一致でエラー発生
MsgBox "処理終了"

On Error Goto 0 ' これ以降はエラー時に中断する

On Error Resume Nextの場合、エラーが発生した場合でも次の行の処理を続けるため、"処理終了"のメッセージが表示されます。

On Error Resume Nextを指定すると重大なエラーが発生しても見逃す可能性があります。
テスト中など、データ例外などを明示的に検知したい場合は、On Error Goto 0を指定すると、それ以降の行はエラー時に中断させることができます。

On Error Goto ラベルの例

On Error Goto ErrorProc

Dim i As Integer
i = "文字" ' 型の不一致でエラー発生
MsgBox "処理終了"

ErrorProc:
MsgBox "エラー発生"

On Error Goto ラベルの場合、エラーが発生した場合はラベル(ErrorProc)に処理が移るため、"エラー発生"のメッセージが表示されます。
"処理終了"のメッセージは表示されません。

また、ラベルの名前は自由に設定することができます。

On Error Goto 0の例

On Error Goto 0

Dim i As Integer
i = "文字" ' 型の不一致でエラー発生
MsgBox "処理終了"

On Error Goto 0の場合、エラーが発生するとその行で処理が中断します。
"処理終了"のメッセージは表示されません。

エラーの内容を知るには

エラーの内容を知るにはErrオブジェクトを使用します。
Errオブジェクトの各プロパティからエラーの内容を知ることができます。

プロパティ内容
Numberエラー番号
Descriptionエラー番号に対応する文字列(エラー内容)
Source現在のプロジェクト名
HelpFileヘルプファイル名
HelpContextヘルプファイルに対応するコンテキスト番号

ErrオブジェクトとOn Error Goto ラベルの例

On Error Goto ErrorProc

Dim i As Integer
i = "文字" ' 型の不一致でエラー発生
MsgBox "処理終了"

ErrorProc:
MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description

エラーが発生すると、ラベル(ErrorProc)に処理が移り、Errオブジェクトを使って、エラー番号とエラー内容を表示します。
"処理終了"のメッセージは表示されません。

ErrオブジェクトとOn Error Resume Nextの例

On Error Resume Next

Dim i As Integer
i = "文字" ' 型の不一致でエラー発生
If Err.Number <> 0 Then
  Msgbox "エラー発生"
End If

エラーが発生すると、Err.Numberに0以外が入り、"エラー発生"を表示します。
処理はそのまま下の行から続行されます。

On Errorの使い分け方

エラー発生時に中断が許されないアプリケーションでは、On Error Goto ラベル を使用するのが一般的です。

また、エラー発生時に処理を中断したくない場合に、On Error Resume Next を使います。

アプリケーションでエラー箇所が特定できない場合やデバッグ時には On Error Goto 0 で処理を中断させて、調査を行います。
処理を中断してしまうため、デバッグ時以外は利用しないのが一般的です。





Excel VBA講座




関連リンク
セル、シート、ブックの参照や操作、
書式設定に関するサンプル集。

VBScriptの文字列、日付、ファイルの操作に関するサンプル集。



アクセスランキング


Excel VBA講座
文字操作
関連する内容
セルの参照
データ型操作


Copyright (C) Excel@Workshop All rights reserved.