Просто, чтобы уточнить ответ Джона Руди.
Sytax не является обязательным (малый «o»), то есть вам не нужно его использовать. По моему опыту, большинство кодеров VB6 не используют синтаксис и вместо этого предпочитают регулярные «неназванные» параметры.
Если вы решите его использовать, все последующие параметры в вызове подпрограммы должны быть названы.
Именованный синтаксис параметров может использоваться по всем параметрам, независимо от того, был ли объявлен соответствующий аргумент с использованием ключевого слова VBA Optional
(капитал «O»). Рассмотрим, например, это (слегка ненормальный) функция VBA с двумя параметрами, один из необходимых и один Optional
:
Private Function TimesTen(_
ByVal Value As Long, _
Optional ByVal Factor As Long = 10 _
) As Long
TimesTen = Value * Factor
End Function
В VBA, я могу назвать его, используя именованные параметры для требуемого параметра (Optional
параметра Я может быть просто опущено в VBA, в отличие от C# .NET, для которого Type.Missing
должен быть использован для всех опущенных Optional
параметров):
MsgBox TimesTen(Value:=9)
Если бы я хотел назвать его с параметрами в «неправильном» порядке (почему ??) I может достичь этого с использованием именованных параметров:
MsgBox TimesTen(Factor:=11, Value:=9)
Попытка использовать обычный «безымянный» вызов параметра после имени одного вызывает ошибку компиляции:
MsgBox TimesTen(Value:=9, 11)
Так почему VBA кодеры использовать именованные параметры, если VB6 кодеры редко, даже если они используют по сути, тот же язык? Я думаю, это связано с тем, что VBA, созданный макрорекордером приложений MS Office, имеет тенденцию (всегда?) Генерировать именованные параметры, и многие кодеры VBA учатся программированию таким образом.
Спасибо, часть Shift заставило меня подумать, что это какая-то языковая функция, не думал, чтобы посмотреть параметры метода. – 2008-10-22 20:42:39
Не проблема. :) – 2008-10-22 20:55:23