Функція – це вбудована формула, яка виконує обчислення значення і вставляє це значення у те місце програми, де вказано ім'я функції.
На відміну від процедур, які, як правило, виконують якесь завдання (або кілька завдань), функції оперують певними даними і завжди повертають певне результуюче значення.
Наприклад, функція 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 (Автоматична перевірка синтаксису), то редактор буде автоматично контролювати, щоб ви вказали значення для всіх обов'язкових значень функції, або процедури.
