そこで、わざとエラーを出して、エラーが発生した場合のプログラムの動作確認を行なう方法について説明します。
わざとエラーを発生させるには、いくつか方法があります。
Excel(メール送受信.xls)のVBEを開き、以下の方法を試してください。
どちらの方法でも、「On Error GoTo Err_Shori」の後なら、どこに記述してもかまいません。もちろんエラー処理の前までの範囲に書きます。
とりあえず、直後に書いて、実行してみてください。
■方法1
On Error GoTo Err_Shori
Dim test As String
test = Sheets("テスト").Range("A1").Value
これはExcelのワークシートの値を参照し、変数に代入するプログラムです。
でも「テスト」というワークシートは無いので、エラーが発生します。
他にもユーザーが、Excelのワークシートを、
・誤って削除してしまった
・名前を変更してしまった
などの場合にも、値を参照することができないので、同様のエラーが発生する可能性があります。
■方法2
On Error GoTo Err_Shori
Error 9
この Error ステートメントは、エラーを疑似的に発生させます。
番号によって、エラーの種類を変えることもできます。プログラムの動作テストをしたい時に便利です。
どちらの方法でも、エラー処理がちゃんと行なわれると、エラー発生時には、以下のようなメッセージボックスが表示されます。
そして、システムによる強制終了ではないので、フォームは表示されたままプログラムが終了します。
*動作確認が終わったら、プログラムを元に戻すのをお忘れなく!
確かにプログラミングした通りのメッセージが表示できましたが、「システムが表示していたエラーメッセージと大差ないのでは?」と思うかも知れません。
しかしエラー処理で大事なことは、「プログラマーの意図した通りの処理を行なってから、プログラムを終了できる。」ということです。
もし大切なデータがあれば、保存してから終了するなど、対策ができるからです。
このようにエラー処理をちゃんと行なうと、システムが途中で強制終了する致命的エラーが無いので、安定して動作します。
だからエラー処理は大事なのです。
【補足】
もし余裕があれば、「On Error GoTo Err_Shori」の前で、エラーを発生させてみて、違いを確認してください。
・例
Error 9
On Error GoTo Err_Shori
または、「On Error GoTo Err_Shori」を、他の場所へ移動してみてください。
On Error ステートメントの前では、まだエラー処理ルーチンが有効になっていないので、エラー処理のプログラムは、実行されないことがわかります。
*エラーの監視が始まっていないということ
したがって、On Error ステートメントをどこに書くかは、とても重要です。
無難なのは、プログラム(プロシージャ)の先頭に書いておくことですが、エラーが出やすい処理の前に書くこともあります。
例えば、変数の宣言などは、実行時エラーが出ませんので、On Error ステートメントの前に書いても大丈夫です。
逆に変数への代入などは、データ型が合わないなどのエラーが出やすい部分です。
プログラミングに慣れてくると、どんな処理でエラーが発生しやすいのか、ある程度は予測できるようになります。