エラーが発生する可能性がある場合、プログラムが中断しないようにエラー処理を行う必要があります。エラー処理で使うのがOn Errorです。ここでは使用例を掲載します。
下はわざとエラーを発生させたVBAです。
n3 = n2 / n1の部分でエラーが発生し、次のDebug.Printは実行されていません。
Sub MyError()
Dim n1 As Long
Dim n2 As Long
Dim n3 As Long
n1 = 0
n2 = 10
n3 = n2 / n1
Debug.Print n3
End Sub
● On Error Resume Next
On Error Resume Nextを使うとエラーを無視し、次の処理に移すことができます。
だったら全てOn Error Resume Nextにすればいいようですが、その場合予期しないエラーを防止できなくなり、予想できない結果になってしまいます。
使用する場合は、予期せぬエラーが発生してもコントロールできるようにしておく必要があります。
Sub MyError()
Dim n1 As Long
Dim n2 As Long
Dim n3 As Long
n1 = 0
n2 = 10
On Error Resume Next
n3 = n2 / n1
Debug.Print n3
End Sub
● On Error Goto Exit Sub
On Error Gotoを使うと指定したラベル位置までとばすことができます。
通常下のように、エラーが発生した場合ラベル位置までとばし、エラーが発生しなかった場合はExit Subでプロシージャを抜けるようにします。
Functionプロシージャの場合は、Exit Functionになります。
実行すると、エラーメッセージが表示されます。
Sub MyError()
Dim n1 As Long
Dim n2 As Long
Dim n3 As Long
n1 = 0
n2 = 10
On Error GoTo ErrSub
n3 = n2 / n1
Debug.Print n3
Exit Sub
ErrSub:
MsgBox "エラーが発生しました。"
End Sub