Еще раз повторяю вопрос - отправил договор и сканы документов по почте - в начале августа, до 5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления. |
Процедуры, подпрограммы и функции
Поименованные аргументы
При задании аргументов процедур можно использовать либо позиционное, либо произвольное расположение аргументов.
В первом случае VBA интерпретирует не только сами аргументы, но и порядок их расположения, предполагая, что они перечислены в соответствии с расположением формальных параметров. При пропуске необязательных аргументов необходимо "оставлять" для них место при помощи запятой, которой может предшествовать пробел.
Использование поименованных аргументов исключает влияние позиции аргумента на его интерпретацию. Для задания поименованных аргументов после названия формального параметра вызываемой процедуры поставьте оператор назначения - двоеточие и знак равенства ( := ), за которым укажите передаваемое значение аргумента.
Преимущества
- Поименованные аргументы улучшают читабельность программы.
- Исключаются ошибки, вызванные неверным порядком аргументов.
- Облегчается перечисление аргументов в случае пропуска необязательных аргументов.
Используя поименованные аргументы, к функции расчета выплат можно было бы обратиться так: salary_em(ra:=r, ho:=h).
Пример
Процедура запрашивает имя и фамилию и составляет адрес электронной почты на Yandex из первой буквы имени и фамилии полностью.
Диалоговое окно запроса на ввод имени и фамилии размещается на экране, при этом используются координаты xpos=100 и ypos=100. В первом операторе InputBox применяются позиционные аргументы - пропущенные два аргумента отмечены запятыми. Во втором операторе InputBox используются поименованные аргументы.
Функция Left выделяет первую букву имени. Подробно об аргументах функций InputBox и Left см. ниже.
Использование необязательных аргументов
Ключевое слово Optional, задаваемое при описании параметров процедуры, предполагает, что значение параметра не обязательно будет передано в процедуру. Иными словами, аргумент возможен, но необязателен.
Пример
Функция рассчитывает налоговые выплаты и имеет два параметра S - доход, R - ставка налога. Если ставка налога не задана, то налог рассчитывается, исходя из 13%.
- Оператор Debug.Print NS(1000) в вызывающей процедуре распечатает в окне Immediate Window размер 13%-го налога.
- Оператор Debug.Print NS(1000, 0.1) выведет в это окно размер 10%-го налога от заданного дохода.
Использование параметра ParamArray
Если количество аргументов, передаваемых вызываемой процедуре, неизвестно до момента вызова процедуры, то последний параметр в заголовке вызываемой процедуры должен быть описан как ParamArray. Тогда при вызове процедуры последний аргумент рассматривается как массив переменных типа Variant и внутри процедуры производятся действия уже с массивом.
Замечание
- Используйте функцию Ubound для определения количества элементов в передаваемом массиве.
Пример
Создать функцию умножения аргументов.
Для умножения произвольного количества аргументов можно предложить два варианта функций:
- с вычислением верхней границы передаваемого массива;
- без вычисления верхней границы передаваемого массива.
В вызывающей процедуре mult_arr создается массив из восьми чисел, элементы которого перемножаются при помощи функций multr или multa.
Результат умножения выводится в окно Immediate Window.
Напомним, что нижняя граница массива равна 0, если инструкция OptionBase не указывает на другое.