ms access vba フォーム レコード消去ボタン DoCmd.RunCommand acCmdDeleteRecord 02


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を表示せずに次の処理を行うことができます。


他のエラーが発生した場合は

依然としてそのエラーメッセージが表示されるように設定されています。


これにより、不要なエラーメッセージが表示されないようになります。


お役に立てば幸いです。

その他にも質問があれば教えてくださいね!


コメント