Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Within a sub procedure two other sub procedures are called consecutively.
The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Either declare the array variable in the module declaration, that is before
any macros, or pass it as a parameter to the second macro. Air-coded Sub Macro1() Dim myArray myArray = Array(1,2,3) Macro2 myArray End Sub Sub Macro2(ary As Variant) msgbox ary(1) End Sub -- HTH Bob Phillips "Bradley" wrote in message ... Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The arrays need to be public and static. Just DIM them outside the subs, not
inside the subs and the values will "live" from sub call to sub call Have a good day -- Gary''s Student "Bradley" wrote: Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Gary,
They only need to be public if used across modules. If used in separate macros in the same module, private is fine (preferable?). -- HTH Bob Phillips "Gary''s Student" wrote in message ... The arrays need to be public and static. Just DIM them outside the subs, not inside the subs and the values will "live" from sub call to sub call Have a good day -- Gary''s Student "Bradley" wrote: Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Unfortunately the arrays vary any size for different times the subs are run.
So I have them as PUBLIC open array initially and then REDIM them for the correct size just before populating them in the first sub. I have tried to make this sub a function instead to pass the array with its "new" info back to the initial sub and then pass this to the second sub where the next series of calculations take place. Unfortunately, it still reverts back to an empty array as it returns to the initial sub before even being passed to the second sub. Is there a way of stating the array in the sub name so that it passes the array back with the new data? "Gary''s Student" wrote: The arrays need to be public and static. Just DIM them outside the subs, not inside the subs and the values will "live" from sub call to sub call Have a good day -- Gary''s Student "Bradley" wrote: Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I did try and declare the array as a public variable prior to any subs but
this requires them to have either a fixed size or to be totally variable, ie myArray(5) or myArray(). So I set them initially as follows: PUBLIC myArray() as integer and then in the main sub redefined them as follows: REDIM myArray(Var_Size) as integer This array then populates fine in the first sub, within the main sub, but as soon as the first sub is completed and you return to the main sub the array empties. Which means an empty array is carried into the second sub, within the main sub. Any other suggestions on how to pass the populated array back to the main sub? Thanks for the initial suggestion. "Bob Phillips" wrote: Either declare the array variable in the module declaration, that is before any macros, or pass it as a parameter to the second macro. Air-coded Sub Macro1() Dim myArray myArray = Array(1,2,3) Macro2 myArray End Sub Sub Macro2(ary As Variant) msgbox ary(1) End Sub -- HTH Bob Phillips "Bradley" wrote in message ... Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I think that solves my problem.
The subs I was calling were in seperate modules. I should just group them in the same module. Will let you know. Thanks Bob and Gary "Bob Phillips" wrote: Gary, They only need to be public if used across modules. If used in separate macros in the same module, private is fine (preferable?). -- HTH Bob Phillips "Gary''s Student" wrote in message ... The arrays need to be public and static. Just DIM them outside the subs, not inside the subs and the values will "live" from sub call to sub call Have a good day -- Gary''s Student "Bradley" wrote: Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Although your problem seems solved now, you might be interested to read
Knowledgebase article ID 843144 for background info Jan Bart "Bradley" wrote: I think that solves my problem. The subs I was calling were in seperate modules. I should just group them in the same module. Will let you know. Thanks Bob and Gary "Bob Phillips" wrote: Gary, They only need to be public if used across modules. If used in separate macros in the same module, private is fine (preferable?). -- HTH Bob Phillips "Gary''s Student" wrote in message ... The arrays need to be public and static. Just DIM them outside the subs, not inside the subs and the values will "live" from sub call to sub call Have a good day -- Gary''s Student "Bradley" wrote: Within a sub procedure two other sub procedures are called consecutively. The first sub procedure feeds values into an array. I need this array with these values to then be used in the second sub procedure. As soon as the first sub procedure is complete the array becomes empty and passes an empty array to the second sub procedure. Thus givign me zero for all my calculations in the second array. Please assist. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
weird saving of a document with macros resulting with macros being transfered to the copy | Excel Programming | |||
convert lotus 123w macros to excel macros | Excel Programming | |||
Macro Size Limit / open macros with macros? | Excel Programming | |||
Macros not appearing in the Tools Macro Macros list | Excel Programming | |||
Suppress the Disable Macros / Enable Macros Dialog | Excel Programming |