エラーを無視する

エラー

はじめに

 ExcelVBAで発生するエラーを無視するには、On Error Resume Next を使います。
On Error Resume Next を実行するとエラーが発生しても次のコードを実行して処理を進めます。
 途中でエラー無視の設定を解除したい場合は、On Error GoTo 0 とします。解除しない場合は、そのプロシージャが終了するまで効果が持続します。

On Error Resume Next

  On Error Resume Next でエラーを無視する例です。以下のコードでは、10を0~5 で割っています。

Sub testOnErrorResumeNext()
    Dim i As Long
    
    On Error Resume Next    'エラーを無視
    
    For i = 0 To 5
        Debug.Print 10 / i
    Next i
    
End Sub

【結果】
10
5
3.33333333333333
2.5
2

 結果は、上記のようになり、エラーは発生しません。エラーとなる 10 / 0 を無視して次に進むためです。

On Error GoTo 0

 エラー無視を解除するには、On Error GoTo 0 を使用します。それ以降はエラーが通常通り表示されるようになります。以下のコードでは最後にエラーが発生します。

Sub testOnErrorResumeNext()
    Dim i As Long
    
    On Error Resume Next    'エラーを無視
    
    For i = 0 To 5
        Debug.Print 10 / i
    Next i
    
    On Error GoTo 0     'エラー無視を解除
    
    Debug.Print 10 / 0   'エラー!
    
End Sub

デメリット

 エラーを無視する On Error Resume Next を使用する場合、「エラーが出ると都合が悪いから」という理由で使用しない方が良いでしょう。なぜならエラー発生を無視すると不具合の原因がわかりずらくなってしまうからです。発生しそうなエラーに対して直接対処しておくのがプログラミングの基本姿勢と言えます。

タイトルとURLをコピーしました