View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Error with passing collection as parameter

The construct you describe is an array, not a collection.

this worked for me:

Sub AB()
Dim assyNums() As String
Dim finalrow As Long
finalrow = Cells(Rows.Count, 3).End(xlUp).Row
ReDim assyNums(0 To finalrow - 1)
For i = 0 To finalrow - 3
assyNums(i) = Range("C" & i + 2)
Next i
Matching assyNums
End Sub

Private Sub Matching(assyNums() As String)
For i = LBound(assyNums) To UBound(assyNums)
Debug.Print i, assyNums(i)
Next
End Sub


--
Regards,
Tom Ogilvy

"McManCSU" wrote in
message ...

I am trying to pass a collection to a sub but I keep getting this
error:

Compile Error:
Argument not optional

The collection is a collection of strings filled like this:
For i = 0 To finalrow - 3
assyNums(i) = Range("C" & i + 2)
Next i

I use this command to call the sub:
"Matching (assyNums)"
where Matching is the sub and, assyNums is collection.

The Sub looks like this:
"Private Sub Matching(assyNums)"
- OR - (if i add optional)
"Private Sub Matching(Optional assyNums)"

Inside the sub all i really do, is a for loop that accesses every
element, so like
"For i = 0 To assyNums.Count"

Any help would be greatly appreciated!


--
McManCSU
------------------------------------------------------------------------
McManCSU's Profile:

http://www.excelforum.com/member.php...o&userid=24379
View this thread: http://www.excelforum.com/showthread...hreadid=391811