Tylko po to, by wyjaśnić odpowiedź Johna Rudy'ego.
Sytax jest opcjonalny (mały "o"), co oznacza, że nie musisz go używać. Z mojego doświadczenia wynika, że większość programistów VB6 nie używa składni i zamiast tego woli regularne parametry "bez nazwy".
Jeśli zdecydujesz się z niego skorzystać, wszystkie kolejne parametry w wywołaniu podrzędnym muszą zostać nazwane.
Nazwaną składnię parametru można zastosować do wszystkich parametrów, niezależnie od tego, czy odpowiedni argument został zadeklarowany za pomocą słowa kluczowego VBA Optional
(duże "O"). Weźmy na przykład ten (lekko stuknięty) funkcja VBA z dwoma parametrami, jeden wymagane i jednego Optional
:
Private Function TimesTen(_
ByVal Value As Long, _
Optional ByVal Factor As Long = 10 _
) As Long
TimesTen = Value * Factor
End Function
w VBA, mogę nazwać go za pomocą nazwanych parametrów wymaganych parametrów (the Optional
paramter może być po prostu pominięte w VBA, w przeciwieństwie do C# .NET dla których Type.Missing
musi być stosowany do wszystkich pominiętych Optional
parametrów):
MsgBox TimesTen(Value:=9)
Gdybym chciał nazwać z parametrami w celu „złego” (dlaczego ??) I można to osiągnąć, używając nazwanych parametrów:
MsgBox TimesTen(Factor:=11, Value:=9)
Próba użycia regularnego „nienazwany” Call parametrów po nazwie jednego powoduje błąd kompilacji:
MsgBox TimesTen(Value:=9, 11)
Więc dlaczego programistów VBA użyć parametrów nazwanych jeśli kodery VB6 rzadko, choć używanie w zasadzie ten sam język? Myślę, że dzieje się tak dlatego, że VBA generowany przez rejestrator makr aplikacji MS Office ma tendencję do (zawsze?) Generowania nazwanych parametrów i wielu programistów VBA uczy się programowania w ten sposób.
Dzięki temu, że część Shift sprawiła, że myślę, że była to jakaś funkcja językowa, nie pomyślałam o spojrzeniu na parametry metody. –
Nie jest problemem. :) –
"określanie wartości null dla wszystkich parametrów" - w rzeczywistości należy podać Type.Missing dla brakujących opcjonalnych parametrów. – Joe