Процедури VBA

Процедури VBA: Основні поняття. Урок №32

В попередніх уроках ми вже працювали з процедурами VBA, коли розглядали приклади коду і запускали виконання написаних програм. І ось зараз, настав час детальніше вивчити цю тему.

Процедура VBA – це іменована програма, що зберігається в модулі і складається з деякої послідовності операторів, які виконують певні дії з різними об'єктами. Це найменша одиниця програмного коду VBA.

Як правило, програмний код VBA є сукупністю процедур, кожна з яких вирішує конкретне завдання.

В модулі може зберігатися необмежена кількість процедур.

Типи процедур в VBA

  1. Процедура типу Sub (подпрограмма) – це незалежна частина програми, яка виконує певний блок операторів. Одна процедура типу Sub може викликати (виконувати) іншу.
  2. Процедура типу Function (функція) виконує задані обчислення та повертає результат у вигляді значення, яке присвоюється змінній з ім'ям цієї функції. Функцію можна викликати з іншої процедури.
  3. Процедура типу Property (процедура властивостей) визначає значення властивостей об'єкта, визначеного користувачем класу.
  4. Процедура обробки події (event procedure) – це процедура типу Sub спеціального призначення, яка виконується при виникненні якоїсь події.

Створення процедур в VBA

Оскільки всі VBA процедури зберігаються в модулях, перш ніж приступати до їх написання, потрібно створити новий модуль. Або вибрати існуючий модуль для цієї мети.

Текст будь-якої процедури починається з операторів, які визначають її ім'я та параметри: Sub, Function, Property, або Evet. Закінчення процедури визначається оператором End. Між операторами оголошення і закінчення процедури розміщується команда, або набір команд програми.

Синтаксис процедури Sub

Тут,

  • Sub – обов'язкове ключове слово, яке вказує на початок процедури.
  • Им'я – ім'я процедури (обов'язково має бути унікальним та створюватися згідно з правилами мови VBA).
  • аргументи – значення, яке передається параметру процедури під час її виклику. Це необов'язковий параметр. Заключається в дужки. Якщо аргументів кілька, то їх розділяють комами. Якщо процедура не має аргументів, то після її імені ставлять порожню пару дужок.
  • End Sub – вказує компілятору VBA про закінчення виконання програмного коду поточної процедури.

Область дії процедур в VBA

Кожна VBA процедура має свою область дії, в межах якої її можна викликати з інших процедур. Ця область дії визначається при оголошенні процедури за допомогою ключових слів Private, або Public.

Залежно від сфери дії, виділяють три типи процедур:

  • Процедури доступні для всіх процедур у поточному модулі та недоступні для процедур, які містяться в інших модулях. Оголошуються такі процедури за допомогою ключового слова Private.
  • Процедури доступні для всіх модулів у всіх проектах. Оголошуються вони за допомогою ключового слова Public. Оскільки в VBA ця область дії процедур прийнята за замовчуванням, то ключове слово Public не обов'язково вказувати при оголошенні процедур.
  • Процедури доступні для всіх процедур поточного проекту та недоступні для інших проектів. Оголошуються за допомогою ключового слова Public та додаванням до модуля оператора Option Private Module.

Якщо ви створюєте змінну в процедурі, то вона доступна лише в межах цієї процедури. Щоразу під час запуску процедури вона створюється заново, а при завершенні її роботи – знищується. Такі змінні називають локальними.

Але якщо вам потрібно, щоб змінна не знищувалася, а зберігала своє значення між викликами процедури, то при її оголошенні не використовують не Dim, а Static. Такі змінні називають статичними.

Якщо вказати Static при оголошенні процедури, то всі змінні в ній будуть статичними і їх значення буде збережено навіть після завершення виконання процедури.

Main Menu