ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   maximum variables within sub (https://www.excelbanter.com/excel-programming/321704-maximum-variables-within-sub.html)

mike allen[_2_]

maximum variables within sub
 
i have one sub that calls another and apparently have run out of room for
variables. my code is similar to this one, but with many more variables w/in
sub2:
sub1()
a=1
b=2
c=3
d=4
call sub2(a,b,c,d,e,f)
range("a1") = e
range("a2") = f
end sub

sub2(a,b,c,d,e,f)
e = a + b + c
f = a*b*c/d
end sub

this works great, but i have been adding many variables from sub1 that are
needed to complete sub2 and apparently have run out of space. i have, i
think, 60 variables when it was working, but adding 1 more caused it to
malfunction. surely vba doesn't limit you to 60 variables. any thoughts?
thanks, mike allen



Ben

maximum variables within sub
 
no just 60 variables to pass

"mike allen" wrote:

i have one sub that calls another and apparently have run out of room for
variables. my code is similar to this one, but with many more variables w/in
sub2:
sub1()
a=1
b=2
c=3
d=4
call sub2(a,b,c,d,e,f)
range("a1") = e
range("a2") = f
end sub

sub2(a,b,c,d,e,f)
e = a + b + c
f = a*b*c/d
end sub

this works great, but i have been adding many variables from sub1 that are
needed to complete sub2 and apparently have run out of space. i have, i
think, 60 variables when it was working, but adding 1 more caused it to
malfunction. surely vba doesn't limit you to 60 variables. any thoughts?
thanks, mike allen




Myrna Larson

maximum variables within sub
 
It may well limit the number of arguments. You have a couple of options here.
One is to put your individual variables into an array, i.e.

Dim Vars AS Variant
Vars = Array(1,2,3,4,5,6)

or

Dim Vars() As Long
ReDim Vars(1 to 10)
For i = 1 to 10
Vars(i) = i
Next i

Then you call the 2nd Sub with just one argument, Vars or Vars()

The other option is to use a user-defined type variable, i.e.

Type MultipleVarsType
a as integer
b as byte
c as long
d as double
e as string
f as double
End Type

Sub1()

Dim V As MultipleVarsType
With V
.a = 3
.b = 27
.c = 387587
.d = 3.14159#
.e = "some text"
.f = exp(1)
End With

Sub2 V
End Sub

Sub2(X as MultipleVarsType)
X.a = X.a / 38
End Sub

On Wed, 26 Jan 2005 14:16:51 -0600, "mike allen"
wrote:

i have one sub that calls another and apparently have run out of room for
variables. my code is similar to this one, but with many more variables w/in
sub2:
sub1()
a=1
b=2
c=3
d=4
call sub2(a,b,c,d,e,f)
range("a1") = e
range("a2") = f
end sub

sub2(a,b,c,d,e,f)
e = a + b + c
f = a*b*c/d
end sub

this works great, but i have been adding many variables from sub1 that are
needed to complete sub2 and apparently have run out of space. i have, i
think, 60 variables when it was working, but adding 1 more caused it to
malfunction. surely vba doesn't limit you to 60 variables. any thoughts?
thanks, mike allen



mike allen[_2_]

maximum variables within sub
 
great info. i couldn't really follow the last suggestion, but i got a
variation of the first suggestion to work. thank you. mike allen
"Myrna Larson" wrote in message
...
It may well limit the number of arguments. You have a couple of options
here.
One is to put your individual variables into an array, i.e.

Dim Vars AS Variant
Vars = Array(1,2,3,4,5,6)

or

Dim Vars() As Long
ReDim Vars(1 to 10)
For i = 1 to 10
Vars(i) = i
Next i

Then you call the 2nd Sub with just one argument, Vars or Vars()

The other option is to use a user-defined type variable, i.e.

Type MultipleVarsType
a as integer
b as byte
c as long
d as double
e as string
f as double
End Type

Sub1()

Dim V As MultipleVarsType
With V
.a = 3
.b = 27
.c = 387587
.d = 3.14159#
.e = "some text"
.f = exp(1)
End With

Sub2 V
End Sub

Sub2(X as MultipleVarsType)
X.a = X.a / 38
End Sub

On Wed, 26 Jan 2005 14:16:51 -0600, "mike allen"
wrote:

i have one sub that calls another and apparently have run out of room for
variables. my code is similar to this one, but with many more variables
w/in
sub2:
sub1()
a=1
b=2
c=3
d=4
call sub2(a,b,c,d,e,f)
range("a1") = e
range("a2") = f
end sub

sub2(a,b,c,d,e,f)
e = a + b + c
f = a*b*c/d
end sub

this works great, but i have been adding many variables from sub1 that are
needed to complete sub2 and apparently have run out of space. i have, i
think, 60 variables when it was working, but adding 1 more caused it to
malfunction. surely vba doesn't limit you to 60 variables. any thoughts?
thanks, mike allen






All times are GMT +1. The time now is 03:18 PM.

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