userform titlebar and closing form

  • Thread starter Thread starter D.S.
  • Start date Start date
D

D.S.

I would like to prevent the user from closing a userform by clicking the 'X'
on the right side of the titlebar. I need to force closure by using a
command button, and running an exit procedure. Is there a property setting
that will prevent this / or run the exit procedure when the 'X' is clicked?

D.S.
 
DS,

You can use the QueryClose event procedure to catch the form's
closing via the 'X' button.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
 
Use the form's QueryClose event. This has 2 arguments, Cancel and CloseMode.
CloseMode tells you where the close originates from.

vbFormControlMenu 0 The user has chosen the Close command from the
Control menu on the UserForm.
vbFormCode 1 The Unload statement is invoked from code.
vbAppWindows 2 The current Windows operating environment session is
ending.
vbAppTaskManager 3 The Windows Task Manager is closing the
application.


You can test this, and if it's from an unload statement, close else cancel

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode <> vbFormCode And CloseMode <> vbAppWindows
End Sub


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
Great, that will work. I found another method, but it's more complicated
that I require for this project.

Thanks,
D.S.
 
I would like to run my "cmdExit" procedure here, if the user clicks the
close button, but I haven't had any luck. I get a syntax error. Can a
procedure be ran from here?


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Prevent user from closing with the Close box in the title bar.
If CloseMode <> 1 Then Cancel = 1
' < I would rather call my cmdExit procedure here, and omit the
following line >
frmDataEntry.Caption = "The Close box has been de-activated! Please
click the exit button below!"
End Sub

D.S.
 
That should be as easy as

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Prevent user from closing with the Close box in the title bar.
If CloseMode <> 1 Then Cancel = 1
cmdExit
End Sub

If cmdExiit is a button on the form, you would call the Click event and it
would then be

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Prevent user from closing with the Close box in the title bar.
If CloseMode <> 1 Then Cancel = 1
cmdExit_Click
End Sub

Either of these work?


--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
Back
Top