ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   QueryClose problem (https://www.excelbanter.com/excel-programming/398506-queryclose-problem.html)

Keith74

QueryClose problem
 
Hi All

I've two forms i'm toggling between using this code:

frmMain
Private Sub cmdClient_Click()

Unload frmMain
frmClient.Show

End Sub

frmClient
Private Sub cmdCancel_Click()

Dim varResponse As Variant

If blnChangedData = True Then
varResponse = MsgBox("You have changed data without saving" &
Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If

Unload frmClient
frmMain.Show

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)

Dim varResponse As Variant
If CloseMode = vbFormControlMenu Then
If blnChangedData = True Then
varResponse = MsgBox("You have changed data without saving"
& Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If

Unload Me
frmMain.Show
End If
End Sub

If I use the command buttons to go between the forms everything works
fine. If i close frmClient via the red cross, when i try to open the
form again from frmMain i get the error "run time error 400 form
already displayed can't show modally".
Anyone have any idea what the problem is? I'm running XP and excel
2003 sp2 is thats any help.

Thanks

keith


Pranav Vaidya

QueryClose problem
 
Hi,

In my opinion instead of using UNLOAD use Form.Hide

HTH,
--
Pranav Vaidya
VBA Developer
PN, MH-India
If you think my answer is useful, please rate this post as an ANSWER!!


"Keith74" wrote:

Hi All

I've two forms i'm toggling between using this code:

frmMain
Private Sub cmdClient_Click()

Unload frmMain
frmClient.Show

End Sub

frmClient
Private Sub cmdCancel_Click()

Dim varResponse As Variant

If blnChangedData = True Then
varResponse = MsgBox("You have changed data without saving" &
Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If

Unload frmClient
frmMain.Show

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)

Dim varResponse As Variant
If CloseMode = vbFormControlMenu Then
If blnChangedData = True Then
varResponse = MsgBox("You have changed data without saving"
& Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If

Unload Me
frmMain.Show
End If
End Sub

If I use the command buttons to go between the forms everything works
fine. If i close frmClient via the red cross, when i try to open the
form again from frmMain i get the error "run time error 400 form
already displayed can't show modally".
Anyone have any idea what the problem is? I'm running XP and excel
2003 sp2 is thats any help.

Thanks

keith



Keith74

QueryClose problem
 
Thanks for the reply Pranav. It solves the error problem, but now when
the frmClient userform displays for the second time, clicking the red
cross doesn't run the queryclose event.



Keith74

QueryClose problem
 
Ah, found a solution, adding a line to the query close event works

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)


Dim varResponse As Variant
If CloseMode = vbFormControlMenu Then
If blnChangedData = True Then
varResponse = MsgBox("You have changed data without
saving"
& Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If


Unload Me
set frmClient = nothing '<------new line
frmMain.Show
End If
End Sub



Pranav Vaidya

QueryClose problem
 
HI Keith

That's cool
--
Pranav Vaidya
VBA Developer
PN, MH-India
If you think my answer is useful, please rate this post as an ANSWER!!


"Keith74" wrote:

Ah, found a solution, adding a line to the query close event works

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)


Dim varResponse As Variant
If CloseMode = vbFormControlMenu Then
If blnChangedData = True Then
varResponse = MsgBox("You have changed data without
saving"
& Chr(13) & Chr(13) & _
"Do you wish to exit the form now?", vbYesNo)
If varResponse = vbNo Then
Exit Sub
End If
End If


Unload Me
set frmClient = nothing '<------new line
frmMain.Show
End If
End Sub





All times are GMT +1. The time now is 07:28 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com