ms access の vbaで次のようなフォーム内のボタンで
レコードを削除するコードがあるときに、
Private Sub CmdDeleteBtn_Click()
On Error GoTo ErrorHandler
If Me.Is_Active = True Then
MsgBox "You cannot delete ACTIVE Customer.",
vbInformation, "BadChoice"
Exit Sub
Else
If MsgBox("Are you sure You want to delete This customer? ",
vbQuestion + vbYesNo, "Delete") = vbYes Then
Me.AllowAdditions = True
DoCmd.RunCommand acCmdDeleteRecord
Me.AllowAdditions = False
Else
MsgBox "Operation Aborted", vbInformation, "Info"
Exit Sub
End If
End If
Exit Sub
ErrorHandler:
If Err.Number = 2501 Then
MsgBox "The delete operation was canceled.",
vbInformation, "Info"
Else
MsgBox "An unexpected error occurred: " & Err.Description,
vbCritical, "Error"
End If
End Sub
上記のコードで、
DoCmd.RunCommand acCmdDeleteRecord
に対して、ダイアログでいいえを選択したときの
例外処理が記述されていますが、
このときに、MsgBoxを表示せずに、
DoCmd.RunCommand acCmdDeleteRecord
の続きの処理を実行させるには
単に MsgBoxの記述をコメントアウトすればいいのでしょうか?
はい、正解です。
MsgBoxを表示せずに
`DoCmd.RunCommand acCmdDeleteRecord`
の続きの処理を実行させるためには、
該当するMsgBoxの記述をコメントアウトすれば問題ありません。
以下のようにコメントアウトしてください:
```vba
Private Sub CmdDeleteBtn_Click()
On Error GoTo ErrorHandler
If Me.Is_Active = True Then
MsgBox "You cannot delete ACTIVE Customer.",
vbInformation, "BadChoice"
Exit Sub
Else
If MsgBox("Are you sure You want to delete This customer? ",
vbQuestion + vbYesNo, "Delete") = vbYes Then
Me.AllowAdditions = True
DoCmd.RunCommand acCmdDeleteRecord
Me.AllowAdditions = False
Else
MsgBox "Operation Aborted", vbInformation, "Info"
Exit Sub
End If
End If
Exit Sub
ErrorHandler:
If Err.Number = 2501 Then
'MsgBox "The delete operation was canceled.",
'vbInformation, "Info"
Else
MsgBox "An unexpected error occurred: " & Err.Description,
vbCritical, "Error"
End If
End Sub
```
このようにすることで、
エラーハンドラ部分でエラー'2501'が発生した際に、
MsgBoxを表示せずに次の処理を行うことができます。
他のエラーが発生した場合は
依然としてそのエラーメッセージが表示されるように設定されています。
これにより、不要なエラーメッセージが表示されないようになります。
お役に立てば幸いです。
その他にも質問があれば教えてくださいね!
コメント
コメントを投稿