VB6・VBA関数メモ:On Errorステートメント

On Errorステートメントについてメモしておきます。
このステートメントは、エラー発生時の処理方法を指定するステートメントになります。

通常エラー発生時は処理を中断しますが、このステートメントを使うことによって
エラー発生時に指定の行ラベルに移動や、エラー発生時の処理中断を抑止させることができます。

Errorステートメントとは別物なので頭の隅に覚えておくと役立つことがあるかもしれません。
(指摘されるまで単に私が混同してただけです…orz)


概要

On Error GoTo Line
機能 指定後にエラーが発生した場合、指定の行ラベルに移動するようにする
引数 Line 行ラベル

On Error Resume Next
機能 指定後にエラーが発生しても処理を中断しないようにする

On Error GoTo 0
機能 On Error Goto LineやOn Error Resume Nextをキャンセルする


使用例

説明 記述例 出力
エラーが発生した場合、
指定の行ラベルに移動するようにする
On Error GoTo ERR_HANDLER

Debug.Print 1 / 0

Exit Sub

'行ラベル
ERR_HANDLER:

Debug.Print Err.Description
"0 で除算しました。"
エラーが発生しても
処理を中断しないようにする
On Error Resume Next

'0で除算エラーが発生するが処理を中断しない
Debug.Print 1 / 0

'エラー無視してもErrステートメントにエラー情報は格納されている
Debug.Print Err.Description
"0 で除算しました。"
On Error Goto Line
On Error Resume Nextをキャンセルする
On Error GoTo ERR_HANDLER

'0で除算エラーを発生するが、行ラベルに移動せず処理を中断
Debug.Print 1 / 0

Exit Sub

ERR_HANDLER:

Debug.Print Err.Description

On Error GoTo 0

'オーバーフローエラーが発生して処理中断
Dim num As Integer
num = 1E+50

Debug.Print "処理終了"
"0 で除算しました。"
エラー
On Error Resume Next

'0で除算エラーが発生するが処理を中断しない
Debug.Print 1 / 0
Debug.Print Err.Description

On Error GoTo 0

'オーバーフローエラーが発生して処理中断
Dim num As Integer
num = 1E+50

Debug.Print "処理終了"
"0 で除算しました。"
エラー


コメント
コメントする








    
この記事のトラックバックURL
トラックバック