Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default UNDERSTANDING VARIABLE SCOPE

I am trying to maintain variables value so when I return to a userform that
has already been used, it will already be filled out (as long as the user has
previously visited it. I thought declaring the variables as public at the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the variables
are not declared because I want to use to publics but they seem to get over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,119
Default UNDERSTANDING VARIABLE SCOPE

The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform that
has already been used, it will already be filled out (as long as the user has
previously visited it. I thought declaring the variables as public at the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the variables
are not declared because I want to use to publics but they seem to get over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default UNDERSTANDING VARIABLE SCOPE

Hey Jim,

That shouldn't be it. It would be true if the variables were declared in the
form, but if the variables are declared in a normal code module, as the OP
states, their scope extends beyond the life of the form.

It sounds as if the OP has also declared them as class variables in the
form, and so the form uses them, but that is just a guess.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next

time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform

that
has already been used, it will already be filled out (as long as the

user has
previously visited it. I thought declaring the variables as public at

the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the

variables
are not declared because I want to use to publics but they seem to get

over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,119
Default UNDERSTANDING VARIABLE SCOPE

Not how I read the question but who knows. My understanding was that the OP
wanted the values that last populated a form to persist until the next time
the form was shown. If the form is unloaded then the values are lost. This
being the case the OP wanted to store those values globally and then populate
the form with these stored values the next time the form was shown. If the
form is hidden instead of unloaded tehn the values are not lost and there is
no need to store the values globally. But is is a little unclear and I see
your point.

Jeff if we have not answered your question or if you are more confused than
when you first asked just reply back and perhaps we can get you on track.
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Hey Jim,

That shouldn't be it. It would be true if the variables were declared in the
form, but if the variables are declared in a normal code module, as the OP
states, their scope extends beyond the life of the form.

It sounds as if the OP has also declared them as class variables in the
form, and so the form uses them, but that is just a guess.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next

time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform

that
has already been used, it will already be filled out (as long as the

user has
previously visited it. I thought declaring the variables as public at

the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the

variables
are not declared because I want to use to publics but they seem to get

over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default UNDERSTANDING VARIABLE SCOPE

Will try that. I unload it because I thought I had to in order to open up
other forms dependingon what buttons are clicked. How do I create a public
variable that is visible to all of the userform control subs? I have been
coding all of my VBA in the userform control subs, would it be better
practice (or easier to control) to have the click() subs call procedures in a
module and then return?
-JEFF-

"Jim Thomlinson" wrote:

The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform that
has already been used, it will already be filled out (as long as the user has
previously visited it. I thought declaring the variables as public at the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the variables
are not declared because I want to use to publics but they seem to get over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,119
Default UNDERSTANDING VARIABLE SCOPE

If the form is not unloaded then you do not need to store the value. You can
just have the one form reference the values of the other form. Something like

userform2.textbox1.text = userform1.textbox1.text

This works so long as user form 1 is loaded. If not then it will throw an
error. If you want to use global variables to store values they should be
created (most likely) in modules. This is because modules run for the
duration of the program. Forms will go in and out of existence and globals
will be created and destroyed with the form. That being said if the global
only makes sense if the form is in existence then put it in the form. It will
only be created with the form and end with the form and this is a more
efficent use of memory.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

Will try that. I unload it because I thought I had to in order to open up
other forms dependingon what buttons are clicked. How do I create a public
variable that is visible to all of the userform control subs? I have been
coding all of my VBA in the userform control subs, would it be better
practice (or easier to control) to have the click() subs call procedures in a
module and then return?
-JEFF-

"Jim Thomlinson" wrote:

The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform that
has already been used, it will already be filled out (as long as the user has
previously visited it. I thought declaring the variables as public at the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the variables
are not declared because I want to use to publics but they seem to get over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default UNDERSTANDING VARIABLE SCOPE

I had't refreshed when I posted my last so I didn't see this one. I do need
to know how to create and use public variables but what I am trying to
accomplish here is, I need to keep the info entered into a form so the user
can have an opportunity to return and make corrections. The catch is I need
to be able to determine if it is the first time or if the user is returning
to make corrections.
-JEFF-

"Jim Thomlinson" wrote:

Not how I read the question but who knows. My understanding was that the OP
wanted the values that last populated a form to persist until the next time
the form was shown. If the form is unloaded then the values are lost. This
being the case the OP wanted to store those values globally and then populate
the form with these stored values the next time the form was shown. If the
form is hidden instead of unloaded tehn the values are not lost and there is
no need to store the values globally. But is is a little unclear and I see
your point.

Jeff if we have not answered your question or if you are more confused than
when you first asked just reply back and perhaps we can get you on track.
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Hey Jim,

That shouldn't be it. It would be true if the variables were declared in the
form, but if the variables are declared in a normal code module, as the OP
states, their scope extends beyond the life of the form.

It sounds as if the OP has also declared them as class variables in the
form, and so the form uses them, but that is just a guess.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next

time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform

that
has already been used, it will already be filled out (as long as the

user has
previously visited it. I thought declaring the variables as public at

the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the

variables
are not declared because I want to use to publics but they seem to get

over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.




  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,119
Default UNDERSTANDING VARIABLE SCOPE

Forms have an initailize event which only fires when the form is first
created and and activate event which is fired when the form is shown. Using
these you can know if the user has been there or not.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I had't refreshed when I posted my last so I didn't see this one. I do need
to know how to create and use public variables but what I am trying to
accomplish here is, I need to keep the info entered into a form so the user
can have an opportunity to return and make corrections. The catch is I need
to be able to determine if it is the first time or if the user is returning
to make corrections.
-JEFF-

"Jim Thomlinson" wrote:

Not how I read the question but who knows. My understanding was that the OP
wanted the values that last populated a form to persist until the next time
the form was shown. If the form is unloaded then the values are lost. This
being the case the OP wanted to store those values globally and then populate
the form with these stored values the next time the form was shown. If the
form is hidden instead of unloaded tehn the values are not lost and there is
no need to store the values globally. But is is a little unclear and I see
your point.

Jeff if we have not answered your question or if you are more confused than
when you first asked just reply back and perhaps we can get you on track.
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Hey Jim,

That shouldn't be it. It would be true if the variables were declared in the
form, but if the variables are declared in a normal code module, as the OP
states, their scope extends beyond the life of the form.

It sounds as if the OP has also declared them as class variables in the
form, and so the form uses them, but that is just a guess.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
The values in the form are being discarded because you are unloading the
form. Instead of unloading the form just hide it. By doing this the values
will not be lost and you will not need to store them anywhere. The next
time
you show the forms it look just like th user left it before it was hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform
that
has already been used, it will already be filled out (as long as the
user has
previously visited it. I thought declaring the variables as public at
the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the
variables
are not declared because I want to use to publics but they seem to get
over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.




  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default UNDERSTANDING VARIABLE SCOPE

Jeff,

I have posted a sample workbook at http://cjoint.com/?iyxvpLS2bJ

Download it, click the button, enter some valid date, and then click OK
again. Then repeat. Analyse the code to see how it happens.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
Not how I read the question but who knows. My understanding was that the

OP
wanted the values that last populated a form to persist until the next

time
the form was shown. If the form is unloaded then the values are lost. This
being the case the OP wanted to store those values globally and then

populate
the form with these stored values the next time the form was shown. If the
form is hidden instead of unloaded tehn the values are not lost and there

is
no need to store the values globally. But is is a little unclear and I see
your point.

Jeff if we have not answered your question or if you are more confused

than
when you first asked just reply back and perhaps we can get you on track.
--
HTH...

Jim Thomlinson


"Bob Phillips" wrote:

Hey Jim,

That shouldn't be it. It would be true if the variables were declared in

the
form, but if the variables are declared in a normal code module, as the

OP
states, their scope extends beyond the life of the form.

It sounds as if the OP has also declared them as class variables in the
form, and so the form uses them, but that is just a guess.

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Jim Thomlinson" wrote in message
...
The values in the form are being discarded because you are unloading

the
form. Instead of unloading the form just hide it. By doing this the

values
will not be lost and you will not need to store them anywhere. The

next
time
you show the forms it look just like th user left it before it was

hidden.
--
HTH...

Jim Thomlinson


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a

userform
that
has already been used, it will already be filled out (as long as the

user has
previously visited it. I thought declaring the variables as public

at
the
module level would make them visible in all subs but it is not

working.

In module 3 I have variables declared as public. In the sub, the

variables
are not declared because I want to use to publics but they seem to

get
over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been

assigned
inside the sub.






  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 26
Default UNDERSTANDING VARIABLE SCOPE

Thanks everybody for your help. One problem I have corrected is that I was
trying to use input boxes on a userform and have now switched to text boxes
which stores the data to the myBox.text. Much easier to work with.


"-JEFF-" wrote:

I am trying to maintain variables value so when I return to a userform that
has already been used, it will already be filled out (as long as the user has
previously visited it. I thought declaring the variables as public at the
module level would make them visible in all subs but it is not working.

In module 3 I have variables declared as public. In the sub, the variables
are not declared because I want to use to publics but they seem to get over
written when they are assigned a value. ie.

MODULE 3
public v1 as string
public v2 as string

private sub MyButton_click()
v1 = "myValue"
v2 = "myValue"
end sub

The watch window shows <Out of context after values have been assigned
inside the sub.

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
variable scope mgasparel Excel Programming 2 February 16th 05 05:22 PM
scope/ lifetime of variable jeffP Excel Programming 5 September 19th 04 05:25 AM
scope/ lifetime of variable Norman Jones Excel Programming 0 September 18th 04 12:55 AM
Variable Scope Kevin Excel Programming 1 September 14th 04 07:05 PM
Variable scope TonyM Excel Programming 5 April 24th 04 01:02 PM


All times are GMT +1. The time now is 01:01 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"