AccessVBAでエラー処理(On Error GoTo Error)を入れる

スポンサーリンク

AccessのVBAに必ずエラー処理を入れていますか?

エラー処理とは「On Error GoTo Error」のことです。

関数の中でエラーが発生したらキャッチしてメッセージを出すものです。
このエラー処理を入れると関数内の途中でエラーが発生すると
処理をスキップしてエラーメッセージを表示します。
もし、このエラー処理を入れていないとどうなるのか?というと
おそらくエラーメッセージが表示されてプログラムが途中で中断すると思います。

エラー処理を入れるメリットは、プログラムが途中で中断(中途半端に中断)
することなくメッセージだけ表示して終わらすことができることです。

[vb]
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

[/vb]

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

スポンサーリンク
広告
広告

フォローする