Ключевое слово Const опционально и указывает, что значение этого параметра не изменяется во время выполнения функции. Константа может быть передана в функцию только при использовании параметра Const.
Ключевое слово ByRef опционально и указывает, что параметр должен быть интерпретирован, как ссылка на оригинальный обьект. По умолчанию, значение параметра копируется в новую переменную. ByRef обычно используется, когда функция работает с большими объёмами данных, поскольку копирование большого числа данных может занять много времени. Обратите внимание, что только объявленные переменные могут быть переданы в качестве параметра ByRef; безымянные временные переменные, такие, как значения, возвращённые функциями, также могут быть переданы в качестве параметра ByRef. Заданную явно константу ("Тест", 15, True и т.д.) нельзя передать в качестве параметра ByRef.
При одновременном использовании ByRef и Const нет разницы, в каком порядке их записывать.
Массивы также могут быть переданы в функции. Для этого в качестве передаваемого параметра следует указать имя массива (без всяких скобок). Для передачи массива в пользовательские функции рекомендуется использовать ключевое слово ByRef, чтобы избежать лишнего копирования всего массива.
Опциональные параметры обьявляются присваиванием им значения. Значение может быть глобальной переменной, макросом или явно заданной константой. В описании функции опциональные параметры всегда следуют после всех остальных параметров. Все параметры, следующие после первого опционального параметра также должны быть опциональны. Внутри функции, узнать число переданных параметров можно узнать, используя макрос @NUMPARAMS (см. пример 2).
Ключевое слово Return может быть использовано для выхода из функции. В отличие от встроенных функций, пользовательские функции возвращают 0, если другое возвращаемое значение не задано.
Обратите внимание, что внутри функции нельзя объявить другую функцию.