VBA 例外処理のサンプル(Excel/Access)

VBAの例外処理のサンプルです。Excel、Accessとも同じです。

目次

サンプル 例外処理(On Error GoTo)
  呼出先のsubプロシージャで例外が発生した場合
  例外を無視する(On Error Resume Next)

例外処理(On Error GoTo)

On Error GoTo 例外名

On Error GoToは、例外発生時、例外処理の箇所に処理がとびます。

Sub test1()
On Error GoTo Exception
    
    Workbooks.Open ("D:\test11.xlsx")

    Exit Sub
    
Exception:
    MsgBox Err.Number & vbCrLf & Err.Description
    
End Sub

2行目は、On Error GoToがあります。例外発生時は、8行目に処理が飛びます。
4行目は、存在しないファイルを読みにいって例外が発生し8行目以下の処理が実行されます。
6行目のExit Subは、例外が発生しない場合に処理を終了します。Exit Subで抜けないとその下の8行目以下の処理が実行されてしまいます。
8行目以下は、例外発生時の処理が記述してあります。
Err.Numberは、エラー番号を表示します。
Err.Descriptionは、エラー文言を表示します。

以下は、Excelでファイルが存在しなかったときに表示される文言です。

呼出先のsubプロシージャで例外が発生した場合

呼出先のsubプロシージャ内で例外が発生しても呼び出し側で例外をキャッチできます。

Sub test1()
On Error GoTo Exception
    
    Call openBook

    Exit Sub
    
Exception:
    MsgBox Err.Number & vbCrLf & Err.Description
    MsgBox ("test") '表示される
    
End Sub
Sub openBook()

    Workbooks.Open ("D:\test11.xlsx")
    
End Sub

4行目は、13行目を呼んでいます。
15行目で、存在しないファイルを開こうとして例外が発生したとします。
8行目以降が実行され、10行目は表示されます。

ファイルを閉じる処理がある場合は、例外処理の箇所にも入れておくと例外発生時でも閉じれます。

例外を無視する(On Error Resume Next)

On Error Resume Next

On Error Resume Nextは、例外を無視します。

Sub test1()
On Error Resume Next
    
    Workbooks.Open ("D:\test11.xlsx")

    Exit Sub
    
Exception:
    MsgBox Err.Number & vbCrLf & Err.Description
    
End Sub

4行目は、存在しないファイルを読みにいきますが、例外は無視されます。
6行目で処理は完了します。

関連の記事

Excel VBA 別のエクセルファイルを開く

△上に戻る