Passing arrays to a subroutine

  • Thread starter Thread starter Braden Craig
  • Start date Start date
B

Braden Craig

Hello,

I have a simple question. I would like to know how
to pass an array argument to a subroutine. I would like
to do something like the example below illustrates. (The
syntax for the below example is wrong and does not work
but should show the simple thing I am trying to do.)

I can program a workaround using ParamArray, but I would
prefer not to pass my args in this way. Instead of
listing all the args of my array in the ParamArray, I
would prefer to pack them into an array and pass them to
my subroutine using just the name of the array.

Thanks in advance for any help with this matter.

Braden Craig


Public Sub arrayPass()
Dim argArray(3) As Integer

argArray(0) = 12
argArray(1) = 13
testerSub (argArray)

End Sub


Public Sub testerSub(argArray() As Variant)
Dim test1 As Integer, test2 As Integer

test1 = argArray(0)
test2 = argArray(1)

End Sub
 
Hi Braden,

This works for me:

Public Sub arrayPass()
Dim argArray(3) As Integer
argArray(0) = 12
argArray(1) = 13
testerSub argArray
End Sub

Public Sub testerSub(argArray() As Integer)
Dim test1 As Integer
Dim test2 As Integer
test1 = argArray(0)
test2 = argArray(1)
Debug.Print test1, test2
End Sub

--
Rob Bovey, MCSE, MCSD, Excel MVP
Application Professionals
http://www.appspro.com/

* Please post all replies to this newsgroup *
* I delete all unsolicited e-mail responses *
 
Your code is almost right, the only change I made is I
removed the parenthesis around the argArray argument
array when calling the testerSub procedure.

Public Sub arrayPass()
Dim argArray(3) As Integer

argArray(0) = 12
argArray(1) = 13
testerSub argArray

End Sub


Public Sub testerSub(argArray As Variant)
Dim test1 As Integer, test2 As Integer

test1 = argArray(0)
test2 = argArray(1)

End Sub
 
This worked fine for me:

Public Sub arrayPass()
Dim argArray(3) As Integer

argArray(0) = 12
argArray(1) = 13
testerSub argArray

End Sub


Public Sub testerSub(argArray() As Integer)
Dim test1 As Integer, test2 As Integer

test1 = argArray(0)
test2 = argArray(1)
Debug.Print test1
Debug.Print test2
End Sub
 
As does this:

Public Sub arrayPass()
Dim argArray(3) As Integer

argArray(0) = 12
argArray(1) = 13
MsgBox testerSub(argArray)

End Sub


Public Function testerSub(inputArray As Variant)
Dim test1 As Integer, test2 As Integer

test1 = inputArray(0)
test2 = inputArray(1)
testerSub = test1 & " " & test2

End Function

Alan Beban
 
Back
Top