Correct code to Exit Userform, with out Unloading data

C

Corey

What is the best way to close off a userform without unloading the data.

Userform.hide simply hides the userform,
but is this good enough as a close?
As it still stores the data in the userform if something was placed there.

Corey....
 
N

Nick Hodge

Corey

Hide is the only way to dismiss the form and persist the data, Unload
removes it from memory and returns the controls to their design time state
and it cannot be read

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
C

Corey

So to clear the data that was entered and to use the .hide,
The userform should be coded to clear all values upon Initializing to
remove any values that were entered previously if the userform is then
re-.shown?

Corey....
 
N

Nick Hodge

Corey

A normal procedure would be

'UserForm1 initialisation (Either design time or runtime)
UserForm1.Show (Shows and loads into memory, fires UserForm_Initialize()
event)
'do what you want with the form
UserForm1.Hide
'Read all the controls and place or do with them what you will
Unload UserForm1
'This removes all the values and renders form unreadable (out of memory)
'Start routine again

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
C

Corey

So if you .Hide THEN Unload, the values are not updated into a sheet?

But Unload without .Hide does ?
Corey....
 
N

Nick Hodge

Corey

Hiding keeps the form in memory and therefore the values in any controls
(You will have to do something with them, nothing happens automatically).
Providing you DON'T unload it you can continue to use the same values, or
different ones if you either re-show the form or change the
values/properties of controls in code.

Once you unload the form, the data in the controls are gone, forever and you
can do nothing with them until you re-show the form and reset the values of
the controls, etc.

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
N

Nick Hodge

Corey

I think the key here is nothing (updating cells, etc) happen automatically,
you need to set the values on the sheet from the hidden form, then when you
have done this and need the values no longer, unload the form.

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
T

Tom Ogilvy

If controls are linked to cells, then values are updated when the cells
change - no relation to unload or hide

if you use code to write values to cells, then when the code runs the cells
are updated. No relation to unload or hide

What Nick was say is that a lot of people hide the userform (modal) so the
code that called then can continue to run. In that code, there is code to
utililize the values in the controls of the userform such as

v = Userform1.Textbox1.Value

when done extracting values, then the userform is unloaded.

If you don't need to access any values from the calling code, then by all
means, unload the userform to close it rather than using the hide command.

Understand what each method done, then utilize them appropriately to achieve
the results you need.
 
N

Nick Hodge

Tom

Thanks...it's late in the day here, I was having trouble
explaining...hopefully Corey has it now

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
C

Corey

Nick,
If i complete the userform the values selected are input into a sheet.
Therefore if part way through the userform, i decide to cancel the userform.
IF i:
userform.hide
unload me

Still unload what data WAS entered or as it was Hiden are the values then
Deleted ?

Corey....
 
N

Nick Hodge

Corey

If the controls allow linked cells (ControlSource Property in a comboBox for
example) then the value will enter automatically on the sheet and they will
not be destroyed when you unload the form, equally if you have explicitly
placed the data on the sheet using code, then that data will persist after
the form is unloaded/hidden or whatever. If you try and get the values
after the form has been unloaded they will be gone. The worksheet will still
show the data though

--
HTH
Nick Hodge
Microsoft MVP - Excel
Southampton, England
(e-mail address removed)
www.nickhodge.co.uk
 
P

Peter T

when done extracting values, then the userform is unloaded.

AFAIK if the form is merely hidden the form as an object together with its
properties will stay in memory until explicitly unloaded even after the
procedure that show'd the modal form ends, at least in xl2000 and later (in
xl97, if hidden, it unloads when the procedure that show'd the modal form
ends).

I may be on a similar time zone to Nick and it's late for me too, apologies
if I've misinterpreted what you are saying.

Regards,
Peter T
 

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