Hi Jon,
The purpose of the little demo was to show the QueryClose event to the OP
with a view to rethinking the objective of removing the little x. It
showed how pressing the little x, pressing Esc, or the cancel button can
all lead to the same "clear up" routine. The additional prompt was merely
to demonstrate options.
Having said that, sometimes the user's intensions of closing with the
little x can be ambiguous, particularly when OK and Cancel buttons both
exist on the form.
Obviously it means close the form but does it mean keep and apply all the
actions, or do nothing and/or undo any changes. Many users do not know
the convention that the little x is equivalent to cancel (and possibly
undo changes).
When unclear, and particularly if the user is about to discard a lot of
work, it's not uncommon to seek confirmation from a small prompt.
Regards,
Peter T
Jon Peltier said:
If the user clicks the X, he wants to close the dialog. Don't force
another dialog to ask if what he wants is really what he wants.
Run the cancel button code from the QueryClose procedure.
I have an example on this blog post:
Repurpose the Red X Close Button on a VBA UserForm
http://peltiertech.com/WordPress/2008/03/31/repurpose-the-red-x-close-button-on-a-vba-userform/
- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services, Inc.
http://PeltierTech.com/WordPress/
_______
Peter T said:
Although you can disable the little x, even remove the entire caption,
it goes against convention and is not necessary. Put a button on the
form, set its Cancel property = True. Press Esc, the little x and the
button
Private Sub CommandButton1_Click()
' set the cancel property of this button =True
' so it'll be called if user presses Esc
If Chow = True Then Exit Sub
Unload Me
End Sub
Private Function Chow() As Boolean
If MsgBox("Do you really want to cancel and quit ?", _
vbYesNo) <> vbNo Then
' cancel code
Else
Chow = True
End If
End Function
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then
Cancel = Chow
End If
End Sub
Regards,
Peter T
message Hi All
Is it possible to remove the Quit/X button in the upper right corner of
a
userform ?
Alternatively I've got a command button "Cancel" on the userform - if
the
user do
click the Quit/ X button that the code for the cancel button applies?
I'm satisfied with the code for the cancel button, but I don't know
what
steps should
be taken if the user click on the Quit/X button. [using 2003]
Thanks in advance