2010-04-13 14 views
18

Jak utworzyć funkcję ze zmienną liczbą argumentów w układzie podstawowym wizualnym? np.Zmienna liczba argumentów w 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 

Odpowiedz

15

Wystarczy popatrzeć na 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

Będzie to również pracować na VBA? Próbowałem go na VBA, ale nie działa. Nie może rozpoznać ParamArray – Kratz

+1

Powyższy kod ma właściwy pomysł, ale nie będzie kompilowany w stanie, w jakim się znajduje. 1) Nie można zadeklarować 'ParamArray'' ByVal' i 2) można ją zadeklarować jako tablicę 'Variant'. Dlatego deklaracja funkcji powinna brzmieć "Funkcja Sum (ParamArray Vals() jako wariant)" –

+0

@ Mike Spross: Działa na podstawie podanych reguł. Dzięki. @ aserser: dzięki za heads up. – Kratz

11

użytkowania argumentów opcjonalnych, takich jak:

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

lub powszechnie zmiennej argumenty składni

Function Sum(ParamArray XArr() As Variant) 

(może mam grzebał trochę składni e lementy - nie krępuj się poprawić.)

+0

+1 Twoja składnia jest idealna – MarkJ

2

Odpowiedzi tutaj są świetne. W mojej aplikacji wymagałem arbitralnie długiej listy opcjonalnych argumentów po wymaganym początkowym argumencie.

Możesz to zrobić, po prostu dodając wymagane argumenty przed pozycją ParamArray.

Na przykład:

Function Arithmetic(FuncType As String, ParamArray Terms() As Variant) 
Powiązane problemy