サイトについて      連絡先   検索

VBA エラー処理

はじめに

Excel VBA のエラーを処理する方法を紹介します。

On Error Resume Next でエラーを無視できます。

On Error GoTo [行ラベル] でエラーをキャッチできます。

エラーを無視する

On Error Resume Next と書くと、それ以降のコードで発生したエラーを無視して処理を続行します。

On Error Resume Next ' 以降のエラーを無視します。

    Dim i As Integer
    i = 1
    i = "a"
    i = "b"
    Debug.Print(i) ' 1

On Error Resume Next より前のコードでエラーが発生したときは無視できないので、関数の頭に記載することをオススメします。

    Dim i As Integer
    i = "a" ' このエラーは無視できません

On Error Resume Next 

    i = "b"
    Debug.Print(i)

エラーをキャッチする

On Error GoTo [行ラベル] と書くと、エラーが発生したとき指定した行ラベルまで処理を飛ばします。

行ラベルはラベル名の後ろに : を付けます。例 Catch:

On Error GoTo Catch
    Dim i As Integer
    i = 1
    i = "a" ' エラーが発生したあと catch: の行まで処理を飛ばします
    i = 2

Catch:
    Debug.Print(i) ' 1

関数の処理が成功したかどうかは次のようにしてできます。

Public Function Tipsfound As Boolean
On Error GoTo Catch
    
    ' 関数の処理

    ' 処理が正常に終了
    Tipsfound = True
    Exit Function

Catch:
    ' エラー発生
    Tipsfound = False 
    Exit Function

End Function

関連ページ