Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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) "Stu" wrote in message m... 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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 "Bob Phillips" wrote in message ... 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) "Stu" wrote in message m... 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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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) "Stu" wrote in message m... 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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Apologies...both the procedures calling forms are clearing the variables.
"Bob Phillips" wrote in message ... 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) "Stu" wrote in message m... 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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
I have a file that is 4mb. Cleared all formating...still big | Excel Worksheet Functions | |||
Password cleared in clean up | Excel Discussion (Misc queries) | |||
Global Variables using User Forms | Excel Programming | |||
Global Variables Not Accessible | Excel Programming | |||
Declaring Global Variables | Excel Programming |