Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
I have a file with 3 userforms and 1 module. In userfor1
I have declared a public variable: Public SheetExcludeArray As Variant The first part of this form calls userform2 which populates the array. On userform2 I populate this array and the Debug.Print tells me the values are present within the procedcures that support useform2. When I am finished with this form I Unload it and this takes me back to userform1. When I complete the rest of userform1 my main routine is called. The main routine uses teh values from the array I populated. However the values are not longer present. Is this becuase I am unloading the form? Thanks |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
Or is this because public variables do not have the scope
across userforms? That originally I was generating the array in a sub within userform1 that was creating another temporary userform(dilaogue sheets). The final sub that used the array was in a sub that was within userform1. I have done away with teh dilog sheets and have had to build a second userform. Is the issue that I actually popeulate the array in userfor2 but now need to pass it to userform1 so the sub in userform1 can use it? This is confusing too becuase I was able to populate the array in userform 2 without declaring it But the again, I was not in Option Explict mode either......ummmmmmm. -----Original Message----- I have a file with 3 userforms and 1 module. In userfor1 I have declared a public variable: Public SheetExcludeArray As Variant The first part of this form calls userform2 which populates the array. On userform2 I populate this array and the Debug.Print tells me the values are present within the procedcures that support useform2. When I am finished with this form I Unload it and this takes me back to userform1. When I complete the rest of userform1 my main routine is called. The main routine uses teh values from the array I populated. However the values are not longer present. Is this becuase I am unloading the form? Thanks . |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
Declare the public variable in you general module.
Public variables in a class module (such as a userform) have scope within the form. You could address it as a property of the form Userform1.SheetExcludeArray Also, your current use in Userform2 is working with a different SheetExcludeArray. But if you unload the form, it is gone. So better to declare it in your module. -- Regards, Tom Ogilvy "ExcelMonkey" wrote in message ... Or is this because public variables do not have the scope across userforms? That originally I was generating the array in a sub within userform1 that was creating another temporary userform(dilaogue sheets). The final sub that used the array was in a sub that was within userform1. I have done away with teh dilog sheets and have had to build a second userform. Is the issue that I actually popeulate the array in userfor2 but now need to pass it to userform1 so the sub in userform1 can use it? This is confusing too becuase I was able to populate the array in userform 2 without declaring it But the again, I was not in Option Explict mode either......ummmmmmm. -----Original Message----- I have a file with 3 userforms and 1 module. In userfor1 I have declared a public variable: Public SheetExcludeArray As Variant The first part of this form calls userform2 which populates the array. On userform2 I populate this array and the Debug.Print tells me the values are present within the procedcures that support useform2. When I am finished with this form I Unload it and this takes me back to userform1. When I complete the rest of userform1 my main routine is called. The main routine uses teh values from the array I populated. However the values are not longer present. Is this becuase I am unloading the form? Thanks . |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
Sorry Tom but I am confused. I have two userforms.
Userform1 calls Userform2. Userform2 loads an array and takes the user back to userform1. Userform1 has my main routine. This main routine does not recognize the array loaded in Userform2. I want this array available to all of the routines behined Userform1 and perhaps others as well. Do I: 1)Declare array as public in Userform2 2)Delcare array as public in Userform1 3)Delare array as public in a Class Module Thanks and sorry for the confusion. -----Original Message----- Declare the public variable in you general module. Public variables in a class module (such as a userform) have scope within the form. You could address it as a property of the form Userform1.SheetExcludeArray Also, your current use in Userform2 is working with a different SheetExcludeArray. But if you unload the form, it is gone. So better to declare it in your module. -- Regards, Tom Ogilvy "ExcelMonkey" wrote in message ... Or is this because public variables do not have the scope across userforms? That originally I was generating the array in a sub within userform1 that was creating another temporary userform(dilaogue sheets). The final sub that used the array was in a sub that was within userform1. I have done away with teh dilog sheets and have had to build a second userform. Is the issue that I actually popeulate the array in userfor2 but now need to pass it to userform1 so the sub in userform1 can use it? This is confusing too becuase I was able to populate the array in userform 2 without declaring it But the again, I was not in Option Explict mode either......ummmmmmm. -----Original Message----- I have a file with 3 userforms and 1 module. In userfor1 I have declared a public variable: Public SheetExcludeArray As Variant The first part of this form calls userform2 which populates the array. On userform2 I populate this array and the Debug.Print tells me the values are present within the procedcures that support useform2. When I am finished with this form I Unload it and this takes me back to userform1. When I complete the rest of userform1 my main routine is called. The main routine uses teh values from the array I populated. However the values are not longer present. Is this becuase I am unloading the form? Thanks . . |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
with your project as the activeproject (selected in the project explorer)
do Insert = Module Declare it there outside any procedure (at the very top). Don't declare it anywhere else; remove all existing declarations. -- Regards, Tom Ogilvy "ExcelMonkey" wrote in message ... Sorry Tom but I am confused. I have two userforms. Userform1 calls Userform2. Userform2 loads an array and takes the user back to userform1. Userform1 has my main routine. This main routine does not recognize the array loaded in Userform2. I want this array available to all of the routines behined Userform1 and perhaps others as well. Do I: 1)Declare array as public in Userform2 2)Delcare array as public in Userform1 3)Delare array as public in a Class Module Thanks and sorry for the confusion. -----Original Message----- Declare the public variable in you general module. Public variables in a class module (such as a userform) have scope within the form. You could address it as a property of the form Userform1.SheetExcludeArray Also, your current use in Userform2 is working with a different SheetExcludeArray. But if you unload the form, it is gone. So better to declare it in your module. -- Regards, Tom Ogilvy "ExcelMonkey" wrote in message ... Or is this because public variables do not have the scope across userforms? That originally I was generating the array in a sub within userform1 that was creating another temporary userform(dilaogue sheets). The final sub that used the array was in a sub that was within userform1. I have done away with teh dilog sheets and have had to build a second userform. Is the issue that I actually popeulate the array in userfor2 but now need to pass it to userform1 so the sub in userform1 can use it? This is confusing too becuase I was able to populate the array in userform 2 without declaring it But the again, I was not in Option Explict mode either......ummmmmmm. -----Original Message----- I have a file with 3 userforms and 1 module. In userfor1 I have declared a public variable: Public SheetExcludeArray As Variant The first part of this form calls userform2 which populates the array. On userform2 I populate this array and the Debug.Print tells me the values are present within the procedcures that support useform2. When I am finished with this form I Unload it and this takes me back to userform1. When I complete the rest of userform1 my main routine is called. The main routine uses teh values from the array I populated. However the values are not longer present. Is this becuase I am unloading the form? Thanks . . |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
Public Variables
Perhaps the usage of public variables is confusing the OP. The rule of
thumb is too to minimize scoping and public variables aren't required in this scenario e.g. ' ---<Userform2 code module--- Option Explicit Private m_strMyArray() As String Private Sub UserForm_Activate() LoadArray End Sub Sub LoadArray() ReDim m_strMyArray(2) m_strMyArray(0) = "No" m_strMyArray(1) = "Public" m_strMyArray(2) = "Variables" End Sub Public Property Get MyArray() As Variant MyArray = m_strMyArray End Property Private Sub UserForm_QueryClose( _ Cancel As Integer, _ CloseMode As Integer) Me.Hide Cancel = True End Sub ' ---</Userform2 code module--- ' ---<Userform1 code module--- Option Explicit Private Sub UserForm_Click() Dim TestArray() As String Dim frm1 As UserForm2 Set frm1 = New UserForm2 With frm1 .Show vbModal TestArray = .MyArray End With ' Do things with TestArray here ... MsgBox TestArray(0) & _ " " & TestArray(1) & _ " " & TestArray(2) ' ... or use a Property to make it ' available to other procedures End Sub ' ---</Userform1 code module--- Jamie. -- |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
public variables | Excel Discussion (Misc queries) | |||
Public variables | Excel Discussion (Misc queries) | |||
Public Variables | Excel Discussion (Misc queries) | |||
Public Variables | Excel Programming | |||
Public Variables with UserForms | Excel Programming |