Процедури і функції в vba
У VBA передбачені наступні типи процедур:
Процедура типу Sub (підпрограма) - універсальна процедура для виконання будь-яких дій:
Процедура типу Function (функція) - теж набір команд, які повинні бути виконані. Принципова відмінність тільки одне: функція повертає викликала її програмі якесь значення, яке там буде використано. Приклад процедури:
Tomorrow = DateAdd ( "d", 1, Date ())
і приклад її виклику:
Private Sub Test1 ()
У тексті функції необхідно передбачити оператор, який надає їй будь-яке значення. У нашому випадку це рядок Tomorrow = DateAdd ( "d", 1, Date ()).
В принципі, процедури типу Sub теж можуть повертати значення - за допомогою змінних (про це - нижче). Навіщо ж тоді потрібні функції? Все дуже просто: функцію можна вставляти практично в будь-яке місце програмного коду. Наприклад, наш останній приклад може виглядати набагато простіше:
Private Sub Test 1 ()
У VBA передбачені сотні вбудованих функцій (і набагато більше число передбачено в об'єктних моделях додатків Office). Навіть в нашому прикладі використовуються дві вбудовані функції: Date (), яка повертає поточну дату по годинах комп'ютера і DateAdd (), яка вміє додавати до поточної дати певну кількість днів, тижнів, місяців, років і т.п. Про вбудовані функції буде розказано нижче.
У VBA є також процедури обробки подій (event procedure) - процедури типу Sub спеціального призначення, які виконується в разі виникнення певної події. Приклад був наведений вище (Private Sub UserForm_Click ()). Про події докладніше йтиметься в модулі про форми і події.
Є ще процедури типу Property (процедури властивості). Вони потрібні для визначення властивостей створюваного вами класу, а оскільки створенням своїх класів ми займатися не будемо, то їх можна не розглядати.