When unloading a form, use the following piece of code behind a Close
button:
Unload <formName>
This code should also be put in the Form_Unload() event handler
for that form:
Set <formName> = Nothing
This clears out any remaining code/data in the data segment for
the form, if you don't do it explicitly. This is important when you load/unload
many forms, especially those with lots of controls.
By the way, this is not a bug--it's done this way by design. The same
is true for VBA--if you don't initialize global (module) variables in VBA
(for Excel, for example) and have this kind of expression:
i% = i% + 1
then i% will successively have the values 1, 2, 3, . . . as you
run the VBA script one more time. Again, by design.