Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
'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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Passing Array of User Defined Type to Form | Excel Programming | |||
User Form value passing problem | Excel Programming | |||
PASSING DATA FROM USER FORM TO EXCEL SPREADSHEET | Excel Programming | |||
passing a range to a user defined function using a form | Excel Programming | |||
Passing Text from User Form to Spreadsheet | Excel Programming |