Как сделать параметр процедуры Sub или Function в VBA Excel необязательным? Используйте ключевое слово Optional и функцию IsMissing.
Необязательные параметры в VBA Excel
Параметр процедуры необязателен — это означает, что при вызове процедуры аргумент может быть не предоставлен.
Чтобы задать необязательные параметры процедуры используется ключевое слово Optional в определении процедуры.
Для необязательных параметров есть следующие правила:
- Для каждого необязательного параметра в определении процедуры необходимо указать значение по умолчанию.
- Значение по умолчанию для необязательного параметра должно быть константой или выражением константы.
- В определении процедуры сначала указываются обязательные параметры, а затем — необязательные. Параметр, следующий за необязательным параметром, должен быть необязательным.
Пример указания необязательных параметров:
|
1 2 3 |
Sub Primer(Parametr1, Parametr2, Optional Parametr3, Optional Parametr4) ' Код процедуры End Sub |
Значение параметра по умолчанию
Указать значение по умолчанию для необязательного параметра можно двумя способами: задать значение в определении процедуры или с помощью функции IsMissing.
Рассмотрим примеры задания значения необязательного параметра по умолчанию для функции, вычисляющей площадь квадрата.
Первый вариант — указание значения по умолчанию в определении функции:
|
1 2 3 |
Function SquareNumbers(Optional d = 1.2) SquareNumbers = d * d End Function |
Второй вариант указания значения по умолчанию для необязательного параметра осуществляется с помощью функции IsMissing.
Функция IsMissing
Функция IsMissing проверяет, передан ли необязательный аргумент в процедуру, и возвращает соответствующее логическое значение:
- True — для указанного аргумента не было передано ни одного значения.
- False — для указанного аргумента было передано значение.
Второй вариант указания значения по умолчанию для необязательного параметра функции, вычисляющей площадь квадрата:
|
1 2 3 4 |
Function SquareNumbers(Optional d) If IsMissing(d) Then d = 1.2 SquareNumbers = d * d End Function |
Функция IsMissing работает только с типом данных Variant.