ここでは、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