October 18, 2010

Cancelling an Access Form Close

Filed under: Uncategorized — Joe Casella @ 7:46 pm
Tags: ,

Suppose you need to add a standard “Are you sure…” confirmation when the user closes an Access form.  It’s easy to add the confirmation message to a button you create, but how do you handle it when the user clicks the form’s standard close button (the “x” in the corner)? Simply adding Cancel = True to the Form_Close() event doesn’t work because the close event can’t be cancelled.

The key is to use the Form’s Unload event, because it can be cancelled.

  1. Private Sub Form_Unload(ByVal Cancel As Integer)
  3.     If MsgBox("Are your sure", vbYesNo + vbQuestion, "Close Form") = vbNo Then
  4.         Cancel = True
  5.     End If
  7. End Sub

If you’ve created your own Close button that uses Access’ standard docmd.close method you’ll also need to modify your button’s err handler because cancelling the form’s close method will raise error 2501 “The Close action was cancelled”.  Here’s a simple example of how to handle the error.

  1. Private Sub cmdClose_Click()
  2.   On Error GoTo HandleError
  4.     DoCmd.Close(acForm, Me.Name)
  6. ExitHere:
  7.     Exit Sub
  8. HandleError:
  9.     '* Error 2501 will be caused by canceling the form close.
  11.     If Err.Number = 2501 Then
  12.         Resume Next
  13.     Else
  14.         MsgBox("Error: " & Err.Number & " (" & Err.Description & ")", vbOKOnly, "Error")
  15.         GoTo ExitHere
  16.     End If
  17. End Sub


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at

%d bloggers like this: