QueryUnload

I have a form with the close button and a cancel button.  when the close button is clicked, i want the cmdCancel_Click event to fire.  The event fires, but the form does not unload.  Why?

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If Not UnloadMode = vbFormCode Then
    Cancel = True
    cmdCancel_Click
  End If
End Sub

Private Sub cmdCancel_Click()
  Unload Me
End Sub
thatsthefactsjacAsked:
Who is Participating?
 
Suat OzgurConnect With a Mentor Web / Application DeveloperCommented:
setting button value as True instead of calling Click runs nice. But also focus around one line code. As you see there is not End If in my code.

suat
0
 
Suat OzgurWeb / Application DeveloperCommented:
It runs after Cmd_Cancel_click line (End If). So Unload doesnot run because code executing didnot finish in form.

I think so.

suat
0
 
JonFish85Commented:
to fix that problem, try this:

Private Sub Command1_Click()
  MsgBox "Bye!"
  Unload Me
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If UnloadMode <> vbFormCode Then
    Command1_Click
  End If
End Sub


it worked for me... hope this helps!
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
Suat OzgurWeb / Application DeveloperCommented:
Try using this line of code in QueryUnload

 If Not UnloadMode = vbFormCode Then Cancel = True And Me.cmd_cancel.Value = True


suat
0
 
thatsthefactsjacAuthor Commented:
Thanks again smozgur.  I had a feeling that it had to do with the 'end if' after the unload, but had no idea how to get both commands on one line.
0
 
Suat OzgurWeb / Application DeveloperCommented:
Hi JonFish85, your code runs because Cancel=True line doesnot exist, not because of the MsgBox add. (I think so)

So problem is Cancel=True and thatsthefactsjac, why do you need to set Cancel as True there?

Anyway if you dont need it just delete that line and use your code. If you need it then my code would work above.

Regards
Suat
0
 
Suat OzgurWeb / Application DeveloperCommented:
look for And operator in If..Then...Else statement.

Thanks for grading a comment fast and avoid keeping questions open.

with my best regards
suat
0
 
JonFish85Commented:
nice work smozgur! I've never sen "And" used that way before... btw, I had just added the Messagebox as some code to throw in there, cause I couldnt think of anything else ;-)
0
 
Suat OzgurWeb / Application DeveloperCommented:
Thanks, actually i tried semicolon first but it didnot work for this because : also means there is an End If at the end of the If.

like this

 If Not UnloadMode = vbFormCode Then: Cancel = True: cmd_cancel_Click

I often use this way in immediate window for Loops or in If...Then...Else statement.

suat
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.