Я использую настройку, возможно похожую на вашу:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Const InvalidDate As Long = 2113
Select Case DataErr
Case InvalidDate
MsgBox "Invalid date!"
Response = acDataErrContinue
' Cancel invalid entry.
Me.Undo
' DoCmd.Close
Case Else
Response = acDataErrDisplay
End Select
End Sub
Проблема в том, что она сработает до того, как ваша кнопка сфокусируется.Это означает, что форма даже не знает, на что вы нажали, только то, что она была где-то вне текстового поля даты.
Таким образом, DoCmd.Close
закроет форму для того, что было нажато.
Вы можете превратить это в преимущество, которое пользователь может наблюдать за удалением ошибочного ввода..