Процедура типу Function, або функція користувача – це особливий вид процедури, яка завжди повертає якесь обчислене значення. Тобто це фрагмент коду, який містить певні вирази, виконує обчислення на підставі цих виразів та повертає результат цих обчислень.
Якщо звернутися до функції, то можна отримати результат обчислення без повторного написання виразів, і вивести цей результат там, де вказується ім'я функції.
Головна відмінність між функцією та процедурою в тому, що функція повертає значення, а процедура – ні.
Синтаксис функцій в VBA
Function Name(Argument_List) As Type
Операторы VBA
Name = expression
End Function
Здесь,
- Function – ключове слово, яке оголошує початок функції.
- Name – ім'я функції.
- Argument_List – список аргументів функції.
- Type – тип значення функції, яке вона повертає.
- Name = expression – значення що привласнюється функції, яке вона повинна повернути.
- End Function – ключові слова, які закінчують функцію.
Значення, яке повертає функція, може мати будь-який тип даних із тих, що існують в мові VBA.
Якщо при оголошенні функції тип даних не вказаний, то він приймається як тип Variant.
Я наполегливо рекомендую вказувати тип даних під час оголошення функцій, оскільки Variant займає більше пам'яті, ніж будь-який інший тип даних. Відповідно, на обробку значень з типом даних Variant вашій програмі знадобиться більше часу.
Простий приклад використання функцій
Function SLen(tStr As String) As Integer
SLen = Len(Trim(tStr))
End Function
Sub myCode()
MsgBox SLen(" Слово ") 'будут видалені початковий та кінцевий пробіл і виведено в діалоговому вікні кількість символів – 5
End Sub
Ця функція видаляє пробіли на початку і в кінці рядка, а також підраховує кількість символів у виразі.
Ще один приклад функції користувача
Function SquareRoot()
SquareRoot = (Sqr(InputBox("Введіть значення:")))
End Function
Sub myCode()
MsgBox (SquareRoot())
End Sub
У цьому прикладі, користувачеві буде запропоновано ввести число для того, щоб програма могла обчислити квадратний корінь. Після введення числа та натискання на кнопку OK буде показано наступне діалогове вікно з результатом обчислення.
Пам'ятайте.
Головне призначення функції повернення значення.
Процедуру типу Function можна виконати лише викликавши її з іншої процедури.
Якщо в процедурі типу Function відсутній оператор присвоювання, то VBA поверне такі значення:
- 0 – для функцій, які повертають будь-який числовий тип;
- null – для функцій, які повертають рядковий тип;
- Empty – для функцій, які повертають результат з типом Variant;
- Nothing – для функцій, які повертають результат з типом Object;
Важливо!
Функція не повинна змінювати дані, які передаються їй в якості аргументів.
Пошук функцій в VBA
Якщо ви працюєте з великим проектом і використовуєте багато різних процедур та функцій, то цілком логічно, що вам буде важко запам'ятати в якому з модулів зберігається та функція, яка потрібна саме зараз.
Щоб швидко знайти потрібну процедуру, або функцію, і подивитися її VBA код, слід скористатися вікном Object Browser (View → Object Browser).

Щоб не забути що виконує та, чи інша функція, рекомендується зробити її опис. Так ви завжди зможете згадати призначення створеної раніше функції та її особливості. А якщо з вашим проектом працюватиме інший програміст, то це однозначно допоможе йому швидше розібратися у вашому коді.
Щоб додати опис до процедури (або функції), потрібно:
- Знайти її у вікні Object Browser.
- Клікнути по знайденій процедурі-функції правою кнопкою миші.
- У контекстному меню, що з'явилося, натиснути Properties.
- У з'явившомуся вікні Member Options, ввести опис в поле Description.
- Натиснути OK.

