ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   User form varible passing (https://www.excelbanter.com/excel-programming/415807-user-form-varible-passing.html)

miek

User form varible passing
 
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


Rick Rothstein \(MVP - VB\)[_2601_]

User form varible passing
 
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


"miek" wrote in message
...
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



lcaretto

User form varible passing
 
Try making global_var1 a public variable so that it will be visible outside
of module1.

"miek" wrote:

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


Rick Rothstein \(MVP - VB\)[_2603_]

User form varible passing
 
'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


"Rick Rothstein (MVP - VB)" wrote in
message ...
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


"miek" wrote in message
...
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




miek

User form varible passing
 
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




"Rick Rothstein (MVP - VB)" wrote:

'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


"Rick Rothstein (MVP - VB)" wrote in
message ...
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


"miek" wrote in message
...
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






All times are GMT +1. The time now is 09:48 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com