Func...EndFunc
Func functionname([Param1 .. ParamN]) EndFunc
Задаёт пользовательскую функцию.
Параметры функций
В функциях могут быть заданы 4 вида формальных параметров:
- Простой параметр
- Параметр «по ссылке»
- Параметр со значением по умолчанию
- Открытый список параметров
Простой параметр
Простой параметр задаётся просто именем переменной. Значение актуального параметра будет вычисляться перед передачей в функцию.
MyFunc(123+456) Func MyFunc(var) MsgBox(var) # --> 579 EndFunc
Параметр со значением по умолчанию
Этот параметр задаётся именем переменной с присвоением значения по умолчанию. Это позволяет опускать при вызове функции часть параметров. Параметры этого типа должны идти после простых параметров и параметров «по ссылке», но перед открытым списком параметров. Если актуальный параметр будет задан, то переменной будет присвоено его значение, если нет — значение по умолчанию.
MyFunc("text") MyFunc("text", "My title") Func MyFunc(var1, var2 = "Default title") MsgBox(var1) # --> text --> text MsgBox(var2) # --> Default title --> My title EndFunc
Параметр "по ссылке"
Этот тип параметра даёт возможность функции возвращать назад изменённый параметр. Это удобно использовать, чтобы уменьшить число глобальных переменных, что в свою очередь уменьшает число возможных ошибок.
Этот параметр задаётся именем переменной после ключевого слова ByRef. Значение актуального параметра также должно быть переменной, причём существующей на момент запуска функции, иначе будет выдано сообщение об ошибке. Значение актуальной переменной передаётся в функцию, которая может его изменить.
a = 1 MsgBox(a) # --> 1 MyFunc(a) Func MyFunc(ByRef var) MsgBox(var) # --> 1 var = 123 EndFunc MsgBox(a) # --> 123
Открытый список параметров
Параметр задаётся специальным значением «…» и позволяет задавать неограниченный список входных параметров. Этот параметр должен находиться в самом конце списка формальных параметров, всё что находится после него будет проигнорировано. Получение переданных параметров производится с помощью специальной функции Args:
MyFunc(123, 456, 789) Func MyFunc(...) For i = 1 To Args() MsgBox(Args(i), i) # --> 123 --> 456 --> 789 Next EndFunc
Связанные