ParamArray ti consente di passare un numero indefinito di argomenti che la funzione "interpreta" come Array. Se passi direttamente un Array, passi un solo argomento, e non un Array di argomenti.
Per risolvere il problema, devi cambiare la definizione della funzione, utilizzando come argomento un Variant:
codice:
Function Massimo(args As Variant)
Dim i As Integer
i = 0
Dim val_max As Variant
val_max = args(i)
For i = 1 To UBound(args)
If args(i) > val_max Then
val_max = args(i)
End If
Next
Massimo = val_max
Ovviamente dovrai variare il codice della funzione in modo da controllare che l'argomento sia effettivamente un array, ma in questo modo, se devi passare un array costruito direttamente alla chiamata della funzione scriverai così:
codice:
MsgBox Massimo(Array("pippo", "pluto", "paperino"))
Altrimenti potrai popolare il tuo array in un altro momento, passandolo poi alla funzione:
codice:
MsgBox Massimo(allsubFld)

Boolean