Passing a Variable Number of Arguments to Procedures in

By: Steven Holzner  

Usually, you cannot call a procedure with more arguments than the procedure declaration specifies. When you need an indefinite number of arguments, you can declare a parameter array, which allows a procedure to accept an array of values for an argument. You do not have to know the number of elements in the parameter array when you define the procedure. The array size is determined by each call to the procedure.


In Visual Basic .NET, ParamArray arguments are always passed using ByVal. All of the arguments in the array must be of the data type of the ParamArray argument.

Here's an example; in this case, I'll pass different numbers of arguments to a Sub procedure, DisplayMessage. As you can see in the way DisplayMessage is declared, all arguments after the first one go into the parameter array, and I can loop over the parameter array to get all arguments passed to us (note that I use the UBound function,, to determine the upper bound of the array—and notice also that I'm passing a compete array of text strings to DisplayMessage with no problem):

Module Module1
    Sub Main()
        DisplayMessage("First message:", "Hi")
        DisplayMessage("Second message:", "Hello", "there")
        Dim TextArray() As String = {"Hello", "from", "Visual", _
        DisplayMessage("Third message:", TextArray)
        Resume Next
    End Sub

    Sub DisplayMessage(ByVal Title As String, ByVal ParamArray _
        MessageText() As String)
        Dim intLoopIndex As Integer
        For intLoopIndex = 0 To UBound(MessageText)
        Next intLoopIndex
    End Sub
End Module

Here's what you see when this code runs:

First message:
Second message:
Third message:

Archived Comments

Most Viewed Articles (in )

Latest Articles (in

Comment on this tutorial