User form varible passing

M

miek

In my VBA module "module1" i have a global varible

Private global_var1 as boolean
I initialize it in the main Subroutine
global_var1 = false
Then I call my userform, which has a cmdbtn "Doit"
With Question_Form
Load Question_Form
.Show
End With
My userform cmdbtn code is
Private Sub Always_Btn_Click()
global_var1 = True
Question_Form.Hide
End Sub

However, when my userform returns "global_var1" remains = false

How do i pass global_var1 back to module1?
Thanks
 
R

Rick Rothstein \(MVP - VB\)

Does the "main Subroutine" get run every time that you show your UserForm?
If so, you are probably re-initializing the global variable every time.
Since a Boolean variable automatically initializes on creation as False,
there is no need to deliberately initialize it to this value... try removing
the global_var1=False statement from your "main Subroutine" and see it that
makes a difference.

Rick
 
L

lcaretto

Try making global_var1 a public variable so that it will be visible outside
of module1.
 
R

Rick Rothstein \(MVP - VB\)

'lcaretto' spotted the real problem... you Dim'med the global variable as
Private (I completely overlooked this), thus restricting its scope to code
in its Module only.

However, the point I made about the Boolean variable being initialized to
False at creation (so you don't have to initialize it manually) is still
valid.

Rick
 
M

miek

The Subroutine only runs once
I have now set my global_var1 as follows:
When ' global_var1 is comes back from "Question_form" ' global_var1 is = False

Dim global_var1 as boolean

Sub module1
' global_var1 = false ' global_var1 is = False, auto initilized
With Question_Form
Load Question_Form
.Show
End With
ans = global_var1 ' global_var1 is = False
End Sub ' module1

My userform cmdbtn code is

Private Sub Doit_Btn_Click()
global_var1 = True 'global_var1 is = False
Question_Form.Hide 'global_var1 is = True
End Sub
 

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