目次
レズーム
今回は、エラーが発生した場合でもマクロの処理を継続出来る VBA の記述をテストしてみたいと思います。

マクロの一例
「On Error Resume Next」を記述すると、エラーで処理が中断しないようです。
Sub エラーの内容をVBEのイミディエイトウィンドウに出力するマクロ() '「On Error Resume Next」の記述がない場合、[ 8 行目 ] でエラーが発生してマクロが停止します。 On Error Resume Next 'エラー発生の場合も処理を継続出来る設定。 Debug.Print "1 回目" Debug.Print Range("xxxxx1").Address '[ 8 行目 ] 'エラーが発生する記述 Debug.Print "Err.Number = "; Err.Number Debug.Print "Err.Description = "; Err.Description Debug.Print "2 回目" Debug.Print Range("A1").Address 'エラーが発生しない記述 Debug.Print "Err.Number = "; Err.Number Debug.Print "Err.Description = "; Err.Description Err.Clear '最後のエラー情報消去 'Err. 以下で取得可能な情報をリセット Debug.Print "3 回目" Debug.Print Range("A1").Address 'エラーが発生しない記述 Debug.Print "Err.Number = "; Err.Number Debug.Print "Err.Description = "; Err.Description Debug.Print "4 回目" Debug.Print Sheet1.Shapes(0).Name 'エラーが発生する記述 Debug.Print "Err.Number = "; Err.Number Debug.Print "Err.Description = "; Err.Description Debug.Print "完了" End Sub
実行結果
VBE のイミディエイトウィンドウに以下のテキストが出力されました。
1 回目
Err.Number = 1004
Err.Description = 'Range' メソッドは失敗しました: '_Global' オブジェクト
2 回目
$A$1
Err.Number = 1004
Err.Description = 'Range' メソッドは失敗しました: '_Global' オブジェクト
3 回目
$A$1
Err.Number = 0
Err.Description =
4 回目
Err.Number = -2147024809
Err.Description = 指定したコレクションに対するインデックスが境界を超えています。
完了
1 回目は、エラーが発生する記述なので、エラーが発生していますが、「On Error Resume Next」の記述があるので次の処理に進みます。
2 回目は、エラーが発生しない記述ですが、前のエラーの情報が残っています。
3 回目は、「Err.Clear」した後なので、エラーの情報がリセットされています。
4 回目は、エラーが発生するので、エラー情報が更新されています。