Global variables cleared by forms?

S

Stu

Hi all,

I am designing a project set up using a dozen or so public subs. They
are very simple, and i am using global variables (integers) to keep
track of usage statistics for each procedure.

Normally, each procedure runs fine, and adds 1 to its own usage stat.
I'm then outputting these to a text file at the end of each session,
and inputting them at the start of the next (no problems here).

Two of the procedures call (show) forms. My problem is that when the
forms close (either "unload" or just clicking "X"), the code returns
to "End Sub" in the calling procedure, and THEN....all my global
variables get cleared.

(I've checked the exact point by monitoring them line by line in the
Immediate window.)

But this doesnt happen with any of the other subs, only the two that
call forms.

Clearly im not getting something about global variables and/or forms.
Can anyone help? Also, if there isnt a simple explanation, possible
workarounds much appreciated.

Cheers

Stu
 
B

Bob Phillips

Stu,

Firstly, are all of your code modules got he statement 'Option Explicit' at
the start? If not, add it.

Secondly, is the variable outside of any macros?

Thirdly, where is the global declared? In the form? If so the variable in
the calling module should use Userform1.varname instead of varname,
otherwise we are using different variables (Option Explicit will trap this).

It does work, I just tried it again, and it even stays fro subsequent
re-launches of the form.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
S

Stu

Thanks Bob.

To answer your qs:

The module and both forms im using have Option Explicit.

There is one module, and two forms (each called by one proc). The
public variables are declared in Declarations in the module. They are
updated within the procedures, but not within either form.

I'm not sure what you mean by "outside" the macros? The public vars
are being used very simply to track each usage of each procedure, so
they are only used once per proc, as in "intUsageStat = intUsageStat +
1" etc.

I've just noticed that it is only one of the procedures calling the
forms that seems to clear the variables. The only thing that appears
to be different about this one is that the form uses a private
function. Do functions clear public variables?!

Thanks for your help

Stu
 
B

Bob Phillips

Stu,

By outside the macros, I was meaning in the Declarations section.

Public variables are active as long as the project (workbook) is open, so
although I don't know what you are getting at when you say '... do functions
clear public variables ... ' would seem to be an emphatic no!

Post your code, making it clear what is in each module/form.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 

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