Programming Tutorials

Passing a Variable Number of Arguments to Procedures in

By: Steven Holzner in Tutorials on 2010-11-17  

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:

Add Comment

* Required information


No comments yet. Be the first!

Most Viewed Articles (in )

Latest Articles (in