2010-04-13 15 views
18

Come creare una funzione con numero variabile di argomenti in Visual Basic? ex.Numero variabile di argomenti in VB

x = Sum(1,2,3) 
y = Sum(1,2) 

Function Sum('how to declare argument here') 
'Is there any special argument manipulation inside function before it is usable? 
End Function 

risposta

15

Dai un'occhiata alla Passing a Variable Number of Arguments

Function Sum(ParamArray Vals() As Variant) 
    Dim intLoopIndex As Integer 
    For intLoopIndex = 0 To UBound(Vals) 

    Next intLoopIndex 

End Function 
+0

Sarà questo anche lavorare su VBA? L'ho provato su VBA ma non funziona. Non può riconoscere ParamArray – Kratz

+1

Il codice sopra ha l'idea giusta, ma non verrà compilato così com'è. 1) Un 'ParamArray' non può essere dichiarato' ByVal' e 2) può essere dichiarato come una matrice 'Variant'. Pertanto, la dichiarazione della funzione dovrebbe essere 'Function Sum (ParamArray Vals() As Variant)' –

+0

@ Mike Spross: funziona in base alle regole che hai specificato. Grazie. @ astander: grazie per il testa a testa. – Kratz

11

Usare argomenti opzionali, come:

Function Sum(Optional X1 As Integer=0, Optional X2 As Integer=0) 

o universalmente argomenti sintassi variabile

Function Sum(ParamArray XArr() As Variant) 

(forse ho pasticciato con qualche sintassi e lements - sentiti libero di correggere.)

+0

+1 La tua sintassi è perfetta – MarkJ

2

Le risposte qui sono grandiose. Nella mia applicazione ho richiesto un elenco arbitrariamente lungo di argomenti opzionali dopo un argomento iniziale richiesto.

È possibile eseguire questa operazione semplicemente aggiungendo gli argomenti richiesti prima della voce ParamArray.

Ad esempio:

Function Arithmetic(FuncType As String, ParamArray Terms() As Variant) 
Problemi correlati