maximum variables within sub

M

mike allen

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
 
M

Myrna Larson

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
 
M

mike allen

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top