User form varible passing

  • Thread starter Thread starter miek
  • Start date Start date
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
 
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
 
Try making global_var1 a public variable so that it will be visible outside
of module1.
 
'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
 
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
 
Back
Top