Функция – это встроенная формула, которая выполняет вычисление значения и вставляет это значение в то место программы, где указано имя функции.
В отличие от процедур, которые, как правило, выполняют какую-то задачу (или несколько задач), функции оперируют определёнными данными и всегда возвращают некое результирующее значение.
Например, функция Date возвращает текущую системную дату, функция Time – текущее системное время, Now – текущую системную дату и текущее системное время.
Простой пример использования функций
Sub myCode()
myDate = Date 'присвоюємо змінній myDate поточну системну дату
MsgBox myDate
End Sub
В данном примере, функция Date возвращает текущую системную дату, и это значение присваивается переменной myDate. После этого, мы выводим в диалоговом окне значение переменной myDate с помощью функции MsgBox (об этой функции поговорим немного позже).
Аргументы функций
Функция, которая не имеет аргументов, вводится в код программы простым написанием её имени. Если же нужно использовать аргументы, то сначала пишется имя функции, а затем в круглых скобках, в определённом порядке, через запятую перечисляются значения аргументов.
Аргументы функции могут быть обязательными и необязательными. Принцип их передачи такой же как у процедур.
Например, функция MsgBox имеет один обязательный аргумент и четыре необязательных аргумента. Она выводит на экран диалоговое окно и возвращает целое число, которое указывает на то, какую кнопку нажал пользователь.
Синтаксис функции MsgBox
MsgBox ( prompt [, buttons ] [, title ] [, helpfile ] [, context ] )
Здесь,
- promt – это обязательный аргумент. Он отображает в диалоговом окне строковое выражение как сообщение.
- buttons – необязательный аргумент. Он определяет какие кнопки будут отображаться в диалоговом окне.
- title – необязательный аргумент. Он отображает строковое выражение в строке заголовка диалогового окна.
- helpfile – необязательный аргумент. Он определяет файл справки для предоставления контекстной справки в диалоговом окне, когда пользователь нажимает на кнопку «Справка».
- context – необязательный аргумент. Это числовое выражение, которое является номером контекста справки, который соответствующему разделу справки назначил её автор.
Пример использования функции MsgBox
Sub myCode()
Result = MsgBox("Це текстове повідомлення", , "Це заголовок діалогового вікна")
MsgBox Result
End Sub
В данном примере, мы выводим на экран диалоговое окно с текстом «Це текстове повідомлення» и заголовком «Це заголовок діалогового вікна». А вот способ отображение кнопок в диалоговом окне мы опустили, указав отделяющую его запятую.
После того, как пользователь нажмёт в диалоговом окне на кнопку «OK», функция вернёт значение «1», так как эта кнопка имеет именно это значение и на экран будет выведено ещё одно диалоговое окно, в котором в качестве сообщения будет указано «1» (значение переменной Result).
Обратите внимание на то, что при вызове диалогового окна с помощью MsgBox, в первом случае мы использовали круглые скобки, а во втором нет. Так вот, если скобок нет, то VBA выполняет фрагмент кода как процедуру. То есть в первом случае, VBA интерпретирует MsgBox как функцию и возвращает результат, а во втором – интерпретирует MsgBox как процедуру и не возвращает результат.
Подсказки при вводе функций
При вводе встроенной функции VBA, редактор кода отображает подсказку с перечнем её аргументов. Имя следующего ожидаемого аргумента выделяется полужирным шрифтом.

Если у вас не работают такие подсказки, то проверьте установлен ли флажок для опции Auto Quick Info (Автоматическая краткая информация) в окне Option на вкладке Editor (Tools → Options → Editor).

Если на этой вкладке установить флажок и для Auto Syntax Check (Автоматическая проверка синтаксиса), то редактор будет автоматически контролировать, чтобы вы указали значения для всех обязательных значений функции, или процедуры.
