Процедуры в 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