Closing user form in Initialize macro?

D

Don Wiss

I have a situation where the user form Initialize routine can fail to
retrieve data from Access (which is used to populate a combo box). I now
display a msgbox, but I then have to display the form, which of course is
non-functional. I tried using Unload Me, but it didn't work. Presumably
as the form wasn't yet loaded. I would think there must be a way to abort
an initialization and not display the form.

Don <www.donwiss.com> (e-mail link at home page bottom).
 
J

Jim Thomlinson

Check for a valid connection (abiolity to retrieve) prior to initailizing the
form. If you are not going to be able to run the retrieve then dont run the
initialize...

HTH
 
B

Bob Phillips

Couple of ways, but both flash the form unfortunately.

1) If the conditions is met in Initialize, set a variable. Test the
variable in Activate event, and if set, unload the form

2) Good old Ontime. If the condition is met set a timed procedure

Application.OnTime Now + TimeSerial(0, 0, 1), "UnloadForm"

And in a standard code module, create a procedure called UnloadForm that
unloads the form.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
S

Stevie_mac

There is 2 things you can do...

1. Move your code to UserForm_Activate. If an error occurs, you can unload in there.
or
2. Move your code to a Module & if the Access query succeeds, show the form, if not, show the error.

Example of No 2...

Sub LoadDataForm()
Dim f As frmData
Set f = New frmData
If f.GetAccessData() = True Then
f.Show
Else
MsgBox f.GetLastError() 'you'd have to add this!
End If
Set f = Nothing
End Sub
 
T

Tim Zych

Another possibility.

Load the userform. Check if the Combobox has any items (Combobox1.ListCount
0) and then proceed. appropriately.

something like

Load UserForm1
If UserForm1.ComboBox1.ListCount > 0 Then
UserForm1.Show
Else
Unload UserForm1
End If

where the UserForm's Initialize event loads the combobox with MS Access
data.

worked for me.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top