エラー処理(発生時に移動させる)

エラーの発生時に任意の箇所に処理を移動させるコード。On Error GoToステートメントを使用します

'エラー発生したときは移動させる
On Error GoTo エラー発生

エラー発生:

エラー処理として、エラーが発生した際に特定の処理を実行する場面があります

その場合、エラーが発生した時点で実行するステートメント行を移動させることになります
その際に使用するのが「On Error GoTo」ステートメントです

On Error GoTo エラー発生

このステートメントに指定した文字列がラベル文字列となります
行指定も出来ますが、通常は例のように文字列で指定します
ここでは「エラー発生」の部分が当てはまります

このコード以降にエラーが発生した時点で、処理は停止せず指定した行に処理が移動されます

なお、ラベル文字列の設定はGotoステートメントと同じ設定の仕方になるので混同しないようにわかりやすい名前を付けましょう
Gotoメソッドと同じようにラベル文字列行の前には処理を終了させる「Exit Sub」を配置するようにしましょう

この設定を解除するには「On Error GoTo 0」ステートメントを使用します
解除しないと、以降の全ての処理でエラー処理が実行されますので、エラーの予期している範囲で使用するようにします

コードの動き

エラー発生時に処理を移動させる動き
エラー発生時の動き
Err.Raise (1)

このコードはエラーを意図的に発生させるコードです

このコードが実行された時点で、エラーが発生しOn Error GoToステートメントにより処理が移動しています

通常、エラー処理は正常処理の後に作成します
そのままEnd Subまで走らせる形で処理を継続させます

エラーが発生せずに処理が通常終了する動き
エラーが発生しない場合の動き

エラーが発生せずに正常に処理が実行された場合の動きです
終了コードにより、End Subまで行かずに処理を終了させています

これが通常のエラー処理の組み込み方です

処理終了コードを入れていない場合の間違った動き
終了コードを入れてない場合の動き

この画像のように、終了コードを入れ忘れていた場合、正常処理後にエラー処理が実行されてしまいます

Exit Sub
エラー発生:

なので基本的には、以上のような形でコードを作成するようにしましょう