PC Review


Reply
Thread Tools Rate Thread

Re: Check if UserForm is loaded?

 
 
Peter T
Guest
Posts: n/a
 
      31st Aug 2010
I know you've worked around but for future reference try something like
this -

Sub UnloadAllForms()
Dim i As Long
For i = UserForms.Count To 1 Step -1
Unload UserForms(i - 1)
Next

End Sub

If a particular form is loaded you might want to run any clean up code
before unloading the form.

Regards,
Peter T




"Charlotte E" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Hi,
>
>
> I have a macro, which under some conditions load an UserForm, and under
> other conditions don't.
> And, on some of these conditions, the UserForm is only loaded, but not
> shown (for extraction certain information)
>
> To make sure, that I clean up my act, I have an Unload UserForm statement
> at the very end of the macro.
>
> But, for some weird obscure reason the Unload statement actually LOADS the
> userform before unloading it!!!
>
> So, my question is, how to test if the UserForm is already opened, so I
> only Unload it, if it is open???
>
>
> TIA,
>
>


 
Reply With Quote
 
 
 
 
Peter T
Guest
Posts: n/a
 
      3rd Sep 2010
"Charlotte E" <(E-Mail Removed)> wrote in message news:cuGdnYoFNdZcf-

> Thanks, Peter, but once again: The Unload statement actually loads the
> userform first before unloading it, if the userform is not loaded upon
> calling the unload-statement, thus your solution cannot be used, since it
> is important not to load the userform, because this sets off a chain of
> event, which is not wanted when unloading it.


No, the example I posted only unloads Forms that are already loaded. If no
Forms are loaded UserForms.Count will be zero, so the loop will not even
start.

> But, I really find it a lack of effencicy that that the unload statement
> actually loads the userform first!!!


Whenever you attempt to reference a Form it will load if it is not alrady
loaded. It's not a question of efficiency or lack of it.

Regards,
Peter T


>
> "Peter T" <(E-Mail Removed)> wrote in message
> news:i5ijvr$hjd$(E-Mail Removed)-september.org...
>>I know you've worked around but for future reference try something like
>>this -
>>
>> Sub UnloadAllForms()
>> Dim i As Long
>> For i = UserForms.Count To 1 Step -1
>> Unload UserForms(i - 1)
>> Next
>>
>> End Sub
>>
>> If a particular form is loaded you might want to run any clean up code
>> before unloading the form.
>>
>> Regards,
>> Peter T
>>
>>
>>
>>
>> "Charlotte E" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>>> Hi,
>>>
>>>
>>> I have a macro, which under some conditions load an UserForm, and under
>>> other conditions don't.
>>> And, on some of these conditions, the UserForm is only loaded, but not
>>> shown (for extraction certain information)
>>>
>>> To make sure, that I clean up my act, I have an Unload UserForm
>>> statement at the very end of the macro.
>>>
>>> But, for some weird obscure reason the Unload statement actually LOADS
>>> the userform before unloading it!!!
>>>
>>> So, my question is, how to test if the UserForm is already opened, so I
>>> only Unload it, if it is open???
>>>
>>>
>>> TIA,
>>>
>>>

>>

>
>


 
Reply With Quote
 
 
 
 
GS
Guest
Posts: n/a
 
      3rd Sep 2010
> Whenever you attempt to reference a Form it will load if it is not alrady
> loaded. It's not a question of efficiency or lack of it.


As you can see by my previous post, I've gotten used to using
Load/Unload events with forms since using COM and VB6. As Dave aptly
points out, the Initialize event fires whenever a form is referenced.
In VB6, the Load event doesn't fire unless you execute it in code.

Either way, being a Rob Bovey student I've grown accustomed to using
object variables when creating instances of a form/userform because
that's what's exampled in most his books. Referencing the variable has
different behavior than referencing a VBA userform directly is the
lesson I've learned from Dave's suggestion. The problem lies where
there's code in the Initialize event, which I rarely use in VB6
projects.

Just another interesting difference between VB6 and VBA...
<g>

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


 
Reply With Quote
 
Peter T
Guest
Posts: n/a
 
      3rd Sep 2010
There are several differences with VB6 forms, however any attempt to
reference a VB6 Form also loads the form into memory, even say Unload Form1
as with VBA. Also, perhaps counter intuitively, the Unload statement does
not fully Unload the VB6 form.

If you are not using a variable you might want to do say -

Unload Form1 ' to fire the QueryUnload event
Set Form1 = Nothing ' trigger the Terminate event

Regards,
Peter T



"GS" <(E-Mail Removed)> wrote in message
news:i5r4jd$s0h$(E-Mail Removed)-september.org...
>> Whenever you attempt to reference a Form it will load if it is not alrady
>> loaded. It's not a question of efficiency or lack of it.

>
> As you can see by my previous post, I've gotten used to using Load/Unload
> events with forms since using COM and VB6. As Dave aptly points out, the
> Initialize event fires whenever a form is referenced. In VB6, the Load
> event doesn't fire unless you execute it in code.
>
> Either way, being a Rob Bovey student I've grown accustomed to using
> object variables when creating instances of a form/userform because that's
> what's exampled in most his books. Referencing the variable has different
> behavior than referencing a VBA userform directly is the lesson I've
> learned from Dave's suggestion. The problem lies where there's code in the
> Initialize event, which I rarely use in VB6 projects.
>
> Just another interesting difference between VB6 and VBA...
> <g>
>
> --
> Garry
>
> Free usenet access at http://www.eternal-september.org
> ClassicVB Users Regroup! comp.lang.basic.visual.misc
>
>


 
Reply With Quote
 
GS
Guest
Posts: n/a
 
      3rd Sep 2010
on 9/3/2010, Peter T supposed :
> There are several differences with VB6 forms, however any attempt to
> reference a VB6 Form also loads the form into memory, even say Unload Form1
> as with VBA. Also, perhaps counter intuitively, the Unload statement does not
> fully Unload the VB6 form.
>
> If you are not using a variable you might want to do say -
>
> Unload Form1 ' to fire the QueryUnload event
> Set Form1 = Nothing ' trigger the Terminate event
>

I agree with your concept; -setting 'myFormVar = Nothing' is standard
cleanup for me. What I was trying to emphasize is that the Initialize
event fires whenever a form/userform is referenced, and so using code
in that event is where the problem lies in this OP's case. Looking back
at some old VBA code before using an object var to hold an instance of
a userform, I was using my own 'Initialize' procedure rather than the
event, wherein I loaded a userform, did whatever setup tasks I needed
to do, then used Show to display it. Therefore, whenever I used the
following code to query the userform I never had any problems because
the Initialize event was never used.<g>

If Not Userform1 Is Nothing Then Unload Userform1

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup! comp.lang.basic.visual.misc


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Activating userform and filling it with data form row where userform is activate Marthijn Beusekom via OfficeKB.com Microsoft Excel Programming 3 6th May 2005 05:44 PM
Access from add_in userform to main template userform.... =?Utf-8?B?QWppdA==?= Microsoft Excel Programming 1 18th Nov 2004 06:15 PM
Linking userform to userform in Excel 2003 missmelis01 Microsoft Excel Programming 2 27th Aug 2004 08:07 PM
Userform inside another userform =?Utf-8?B?Unlhbg==?= Microsoft Excel Programming 0 23rd Apr 2004 08:01 PM
from userform to userform. ad klevering Microsoft Excel Programming 2 27th Feb 2004 04:17 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 07:59 AM.