?
Solved

QueryUnload

Posted on 2001-09-12
9
Medium Priority
?
643 Views
Last Modified: 2012-06-27
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
0
Comment
Question by:thatsthefactsjac
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 2
9 Comments
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6477826
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
 
LVL 6

Expert Comment

by:JonFish85
ID: 6477833
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
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6477837
Try using this line of code in QueryUnload

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


suat
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 17

Accepted Solution

by:
Suat Ozgur earned 200 total points
ID: 6477846
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
 

Author Comment

by:thatsthefactsjac
ID: 6477858
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
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6477864
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
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6477869
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
 
LVL 6

Expert Comment

by:JonFish85
ID: 6477872
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
 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6477880
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

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month15 days, 4 hours left to enroll

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question