В попередніх уроках ми вже працювали з процедурами VBA, коли розглядали приклади коду і запускали виконання написаних програм. І ось зараз, настав час детальніше вивчити цю тему.
Процедура VBA – це іменована програма, що зберігається в модулі і складається з деякої послідовності операторів, які виконують певні дії з різними об'єктами. Це найменша одиниця програмного коду VBA.
Як правило, програмний код VBA є сукупністю процедур, кожна з яких вирішує конкретне завдання.
В модулі може зберігатися необмежена кількість процедур.
Типи процедур в VBA
- Процедура типу Sub (подпрограмма) – це незалежна частина програми, яка виконує певний блок операторів. Одна процедура типу Sub може викликати (виконувати) іншу.
- Процедура типу Function (функція) виконує задані обчислення та повертає результат у вигляді значення, яке присвоюється змінній з ім'ям цієї функції. Функцію можна викликати з іншої процедури.
- Процедура типу Property (процедура властивостей) визначає значення властивостей об'єкта, визначеного користувачем класу.
- Процедура обробки події (event procedure) – це процедура типу Sub спеціального призначення, яка виконується при виникненні якоїсь події.
Створення процедур в VBA
Оскільки всі VBA процедури зберігаються в модулях, перш ніж приступати до їх написання, потрібно створити новий модуль. Або вибрати існуючий модуль для цієї мети.
Текст будь-якої процедури починається з операторів, які визначають її ім'я та параметри: Sub, Function, Property, або Evet. Закінчення процедури визначається оператором End. Між операторами оголошення і закінчення процедури розміщується команда, або набір команд програми.
Синтаксис процедури Sub
Sub Им'я [(аргументи)]
(оператори)
End Sub
Тут,
- Sub – обов'язкове ключове слово, яке вказує на початок процедури.
- Им'я – ім'я процедури (обов'язково має бути унікальним та створюватися згідно з правилами мови VBA).
- аргументи – значення, яке передається параметру процедури під час її виклику. Це необов'язковий параметр. Заключається в дужки. Якщо аргументів кілька, то їх розділяють комами. Якщо процедура не має аргументів, то після її імені ставлять порожню пару дужок.
- End Sub – вказує компілятору VBA про закінчення виконання програмного коду поточної процедури.
Область дії процедур в VBA
Кожна VBA процедура має свою область дії, в межах якої її можна викликати з інших процедур. Ця область дії визначається при оголошенні процедури за допомогою ключових слів Private, або Public.
Залежно від сфери дії, виділяють три типи процедур:
- Процедури доступні для всіх процедур у поточному модулі та недоступні для процедур, які містяться в інших модулях. Оголошуються такі процедури за допомогою ключового слова Private.
Private Sub Им'я [(аргументи)]
(оператори)
End Sub
- Процедури доступні для всіх модулів у всіх проектах. Оголошуються вони за допомогою ключового слова Public. Оскільки в VBA ця область дії процедур прийнята за замовчуванням, то ключове слово Public не обов'язково вказувати при оголошенні процедур.
Public Sub Им'я [(аргументи)]
(оператори)
End Sub
- Процедури доступні для всіх процедур поточного проекту та недоступні для інших проектів. Оголошуються за допомогою ключового слова Public та додаванням до модуля оператора Option Private Module.
Якщо ви створюєте змінну в процедурі, то вона доступна лише в межах цієї процедури. Щоразу під час запуску процедури вона створюється заново, а при завершенні її роботи – знищується. Такі змінні називають локальними.
Але якщо вам потрібно, щоб змінна не знищувалася, а зберігала своє значення між викликами процедури, то при її оголошенні не використовують не Dim, а Static. Такі змінні називають статичними.
Якщо вказати Static при оголошенні процедури, то всі змінні в ній будуть статичними і їх значення буде збережено навіть після завершення виконання процедури.
Static Sub Имя [(аргументы)]
(операторы)
End Sub
