Arrays declared with Dim, ReDim, or Static can't be passed ByVal. This error has the following cause and solution:
An individual element of an array can be passed ByVal (by value), but a whole array must be passed ByRef (by reference). Note that ByRef is the default. If you must pass an array ByVal to prevent changes to the array's elements from being propagated back to the caller, you can pass the array argument in its own set of parentheses, or you can place it into a Variant, and then pass the Variant to the ByVal parameter, as follows:
Dim MyVar As Variant
MyVar = OldArray()
For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).