AccessVBAでエラー処理ルーチンを作成する方法についてご紹介します。
On Error GoTo Errorについて
エラー処理とは「On Error GoTo Error」のことです。
関数の中でエラーが発生したらキャッチしてメッセージを出すものです。
このエラー処理を入れると関数内の途中でエラーが発生すると
処理をスキップしてエラーメッセージを表示します。
もし、このエラー処理を入れていないとどうなるのか?というと
おそらくエラーメッセージが表示されてプログラムが途中で中断すると思います。
エラー処理を入れるメリットは、プログラムが途中で中断(中途半端に中断)
することなくメッセージだけ表示して終わらすことができることです。
VBA記述例
'Rem ------------------------------------------------------- 'Rem 関数名 : funCheckInput 'Rem 処理内容 : 入力チェックを行います 'Rem 引 数 : なし 'Rem 戻り値 : true(正常)/false(異常) 'Rem ------------------------------------------------------- Private Function funCheckInput() As Boolean On Error GoTo Error funCheckInput = False '================= ' 必須チェック '================= ' 受付日 If Me.txt受付日.value = "" Or IsNull(Me.txt受付日.value) Then MsgBox "受付日を入力してください。", vbExclamation + vbOKOnly, "入力確認" Me.txt受付日.SetFocus Exit Function End If ' 勤務区分 If Me.cbo勤務区分.value = "" Or IsNull(Me.cbo勤務区分.value) Then MsgBox "勤務区分を選択してください。", vbExclamation + vbOKOnly, "入力確認" Me.cbo勤務区分.SetFocus Exit Function End If ' 年齢 If Me.txt年齢.value = "" Or IsNull(Me.txt年齢.value) Then MsgBox "年齢を入力してください。", vbExclamation + vbOKOnly, "入力確認" Me.txt年齢.SetFocus Exit Function End If funCheckInput = True Exit Function Error: MsgBox "エラーが発生しました。エラー内容:" & ERR.Description & Chr$(10), vbCritical, C_MSG_TITLE End Function
On Error GoTo Errorを入れることにより
途中でエラーが発生した際に「Error:」にジャンプしメッセージを表示します。
エラーの種類について
もしこのエラー処理
On Error GoTo Error
が
On Error Resume Nextになっているとどうなるのか?というと
Resume Nextにするとそのまま次の行へいくのでエラーと見た目わからず進みます。
私はこの「Resume Next」があまり好きではありません。
なぜなら、これを使うと不具合がさっぱりわからなくなるからです。
パット見動いているように見えるけれど、実は途中でエラーになって更新処理が出来ていなかった
というのが最近修正したソースコードの改修でありました。
「Resume Next」は使う事ありますが結構慎重に使わないと危険です。
「On Error GoTo Error」の「Error」は何でもOKです
「On Error GoTo Error1」でも「On Error GoTo Error2」でも「On Error GoTo EXCEPTION」でも
ラベルを定義します。そこで
Error1:
Error2:
EXCEPTION:
を用意しておけば良いのです。
VBA作成時は必ずこのエラー処理を入れるようにしたほうが良いです。
コメント