ここでは、VBA でエラー(例外)が発生した場合に、それを無視するサンプルを掲載しています。通常 VBA でエラーが発生すると以下のようなダイアログが出力され処理が停止します。
スポンサーリンク
エラーが発生するサンプル
Private Sub CommandButton1_Click() ' 0で除算する Dim div As Double div = 10 / 0 ' 何かの後続処理 ・・・ ・・・ End Sub
エラーを無視して処理を継続させる On Error Resume Next
エラーが発生しても後続処理に影響を与えず、エラーを無視して処理を継続させたいような場合には、以下のように [ On Error Resume Next ] を記述します。まるで、キャプテン翼に出てくる日向小次郎のドリブルのようです。
Private Sub CommandButton1_Click() ' エラーが発生しても無視して処理を継続させる On Error Resume Next Dim div As Double div = 10 / 0 ' エラーを無視しているため、この位置の処理は実行される ・・・・ (何らかの処理) ・・・・ End Sub
エラーの発生を検出する ( On Error GoTo )
VBA でエラーが発生したことを検出するには、On Error GoTo でエラー発生に処理をジャンプさせます。
Private Sub CommandButton1_Click() ' エラー発生時には、特定のラベルまで処理をジャンプさせる On Error GoTo MyError Dim div As Double div = 10 / 0 ' エラーが発生しない場合は、プロシージャを終了する Exit Sub MyError: ' エラー時のみエラー情報を出力する Call outputErrInfo ' 出力結果 '-------------------------------------------------------- ' Source = VBAProject ' Number = 11 ' Description = 0 で除算しました。 ' HelpContext = 1000011 ' HelpFile = C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7D1\VbLR6.chm ' LastDllError = 0 End Sub Private Sub outputErrInfo() ' ' デバッグ用にエラー情報を出力する ' Debug.Print "Source = " & Err.Source Debug.Print "Number = " & Err.Number Debug.Print "Description = " & Err.Description Debug.Print "HelpContext = " & Err.HelpContext Debug.Print "HelpFile = " & Err.HelpFile Debug.Print "LastDllError = " & Err.LastDllError ' エラー情報をクリアする Err.Clear End Sub
できる限りエラーとならないよう、コントロールしたほうがいいですYO