エラー処理について
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講座
Excel VBA とは
Excel VBAとは、Excelに標準で付いているプログラミング言語です。
VBAはVisual Basic for Applicationsの略で、プログラムの構文は、Vi... |
色を設定するには(ColorIndex、Color)
色の指定方法にはColorIndexとColorの2種類があります。
セルの文字色の場合は Font に、背景色の場合は Interior に... |
VBE とは
VBE (Visual Basic Editor) とは、Excelに搭載したVBA用のエディターのことです。
VBEを起動するには、Excelの「ツール」→「マクロ」→「Visual... |