Ця функція – Public (за замовчуванням), доступна для всіх модулів. Ім'я функції – Sum, аргументи: n – цілого типу, а – числового, обидва аргументи мають кваліфікатор ByRef (за замовчуванням). Функція повертає значення типу Integer.
Private Function F1(a As Single, ParamArray x) As Single
Функція доступна тільки для модуля, у якому вона записана. Аргументи: а - числова змінна типу Single, х - масив довільного числа елементів типу Variant.Функція повертає значення типу Single.
Процедура Function може перебувати в будь-якому місці модуля, за винятком тіла іншої процедури. Викликається процедура по імені із вказівкою фактичних аргументів, у ролі яких можуть виступати константи, змінні, вирази. Виклик може перебувати усередині будь-якого виразу.
Виконання Function починається з першого рядка тіла процедури й триває доти, поки не буде досягнута інструкція End Function або Exit Function (вихід з Function). Далі управління передається в основну процедуру.
Процедура Functionповертає в основнупроцедуру значення, присвоює ім'я Functionоператором: ім'я = вираз. Цей оператор може бути записаний у тілі Function кілька разів, при цьому Function повертає останнє присвоєне значення. Якщо тип функції не заданий явно, то функція повертає значення типу Variant.
Формально Function повертає тільки одне значення, однак після виконання Function можна використовувати й модифікації аргументів, переданих в Function по посиланню (ByRef).
Приклад 1. Обчислити , визначення максимуму виконати в процедурі Function
Private Sub pp1()
Dim y As Single, a As Single, x As Single
a = Val(InputBox("Введіть а"))
x = Val(InputBox("Введіть x"))
y = (max(3.5, x + a) + max(x, a)) / max(x ^ 2, 120)
MsgBox "y=" & y
End Sub
Private Function max(b As Single, c As Single) As Single
If b > c Then max = b Else max = c
End Function
Приклад 2. Обчислити C = , де n>m. Визначення факторіала виконати в процедурі Function.
Private Sub pp2()