При вызове процедур Sub или Function возможна позиционная передача аргументов, т.е. в порядке следования в описании процедуры. Кроме того, аргументы могут передаваться по именам, вне зависимости от позиции. Именованный аргумент состоит из имени соответствующего формального параметра, за которым следует двоеточие со знаком равенства (:=) и значение передаваемого фактического параметра.
Именованные аргументы особенно полезны при вызове процедуры с необязательными аргументами (Optional). Если используются именованные аргументы, то запятые для обозначения отсутствующих параметров не нужны. С помощью именованных аргументов проще проследить, какие аргументы переданы, а какие опущены.
В описании процедуры перед необязательными аргументами должно стоять ключевое слово Optional. Кроме того, в описании процедуры можно присвоить значение необязательному аргументу, которое он принимает по умолчанию. Если при вызове процедуры с аргументом Optional этот аргумент не описан, то для него используется имеющееся значение по умолчанию. Если по умолчанию значение не присвоено, аргумент обрабатывается так же, как любая другая переменная указанного типа.
В следующей процедуре имеются необязательные параметры. Функция IsMissing определяет, были ли переданы в процедуру необязательные аргументы.
Sub OptionalArgs (strState As String, _ Optional intRegion As Integer, _
Optional strCountry As String = “USA”)
IfIsMissing(intRegion) And IsMissing(strCountry) Then