2010-04-13 11 views
18

¿Cómo crear una función con número variable de argumentos en Visual Basic? ej.Número de variable de argumentos en 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 

Respuesta

15

Tener un vistazo a 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

¿Será esto también trabajar en VBA? Lo probé en VBA pero no funciona. No puede reconocer ParamArray – Kratz

+1

El código anterior tiene la idea correcta, pero no compilará como está. 1) Un 'ParamArray' no se puede declarar' ByVal' y 2) solo se puede declarar como una matriz 'Variant'. Por lo tanto, la declaración de función debe ser 'Function Sum (ParamArray Vals() As Variant)' –

+0

@ Mike Spross: Funciona según las reglas que usted indicó. Gracias. @ astander: gracias por el aviso. – Kratz

11

utilizar argumentos opcionales, como:

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

o universalmente sintaxis de argumentos variables

Function Sum(ParamArray XArr() As Variant) 

(que puede haber metido con alguna sintaxis e lements - feel free to correct.)

+0

+1 Tu sintaxis es perfecta – MarkJ

2

Las respuestas aquí son geniales. En mi aplicación requirió una lista arbitrariamente larga de argumentos opcionales después de un argumento inicial requerido.

Puede hacerlo simplemente agregando los argumentos requeridos antes de la entrada ParamArray.

Por ejemplo:

Function Arithmetic(FuncType As String, ParamArray Terms() As Variant) 
Cuestiones relacionadas