【Access】AccessVBAでエラー処理(On Error GoTo Error)

スポンサーリンク

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作成時は必ずこのエラー処理を入れるようにしたほうが良いです。

コメント

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