Перейти к содержимому

VBA Excel. Модуль, процедура, форма

Знакомство с понятиями модуль, процедура, форма в VBA Excel. Модули разных типов. Встроенные диалоговые окна.

  1. Модуль
  2. Процедура
  3. Форма

Самый простой способ перейти в редактор VBA - при активном окне программы Excel нажать сочетание клавиш Alt+F11. Это сочетание работает во всех версиях программы. Если в открывшемся окне нет слева окна проводника «Project-VBAProject», вызовите его через главное меню, выбрав «View» - «Project Explorer». Внутренние окна в редакторе VBA Excel можно перетаскивать в другие места главного окна.

Модуль

Модуль в VBA Excel представляет из себя лист, на который записываются процедуры: подпрограммы и функции. Модули бывают нескольких типов:

  • стандартный модуль,
  • модуль книги,
  • модуль листа,
  • модуль формы.

Теперь разберемся, где они находятся и как до них добраться.

Стандартный модуль
Создайте новую книгу Excel и сохраните ее, в Excel 2007-2016 сохраните как «Книга Excel с поддержкой макросов (.xlsm)». Откройте редактор VBA сочетанием клавиш Alt+F11 и нажмите на пункт меню «Insert». В открывшемся списке выберите «Module». Таким образом вы создадите стандартный модуль. Такие же модули создаются при записи макросов. В проводнике справа появилась папка «Modules» и в ней файл «Module 1». Открыть или перейти в окно открытого стандартного модуля можно, дважды кликнув по его имени в проводнике, или открыв на нем правой кнопкой мыши контекстное меню и выбрав «View Code».

Модуль книги
Открыть модуль книги можно, дважды кликнув в проводнике на пункте «ЭтаКнига», или открыв на нем правой кнопкой мыши контекстное меню и выбрав «View Code».

Модуль листа
Открыть модуль листа можно, дважды кликнув в проводнике по его имени, или открыв на нем правой кнопкой мыши контекстное меню и выбрав «View Code». Кроме того, перейти в модуль листа можно из рабочей книги, кликнув правой кнопкой мыши по ярлыку этого листа и выбрав в контекстном меню «Просмотреть код».

Модуль формы
Откройте редактор VBA сочетанием клавиш Alt+F11 и нажмите на пункт меню «Insert». В открывшемся списке выберите «UserForm». Таким образом вы создадите новую форму «UserForm1». В проводнике справа появилась папка «Forms» и в ней файл «UserForm1». Перейти в модуль формы можно, дважды кликнув по самой форме, или кликнув по имени формы в проводнике правой кнопкой мыши и выбрав в контекстном меню «View Code».

Стандартных модулей в одной книге можно создать любое количество, модуль книги только один, модулей листов или форм только по одному для каждого экземпляра листа или формы.

Между открытыми окнами форм и модулей можно переходить, нажав в главном меню пункт «Window», где перечислены все открытые модули и формы (активный объект отмечен галочкой).

Процедура

Процедуры в VBA Excel подразделяются на 3 типа:

  • Sub (подпрограмма),
  • Function (функция),
  • Property (пользовательские свойства).

Главное отличие функции от подпрограммы заключается в том, что функция возвращает результат вычислений, а подпрограмма - нет. Процедура Property предназначена для создания пользовательских свойств и управления ими (используется не часто).

В редакторе VBA Excel перейдите в стандартный модуль и нажмите на пункт меню «Insert». В открывшемся списке выберите «Procedure...». Появится окно с предложением ввести название процедуры, выбрать тип и зону видимости. Создайте пару процедур с разной зоной видимости, пусть одна будет Sub, а другая - Function. В промежутке между началом и концом процедуры пишется программный код.

Private Sub Test()
'Здесь пишется программный код
End Sub

Зона видимости Private означает, что эту процедуру можно вызвать только из того же модуля, в котором она записана.

Зона видимости Public означает, что эту процедуру можно вызвать не только из того же модуля, в котором она записана, но и из любого другого модуля этой книги и даже из модулей других книг.

Публичная процедура (Public) может быть записана и без явного указания видимости - зона видимости Public предполагается по умолчанию.

Первая запись:

Public Sub Test()

End Sub

и вторая запись:

Sub Test()

End Sub

равнозначны.

Форма

Формы в VBA Excel используются для создания диалоговых окон. Процедура создания новой формы описана в параграфе Модуль формы. Обычно, вместе с новой формой открывается панель «ToolBox» с элементами управления, которые можно добавлять на форму. Если вы закрыли панель с элементами управлениями, отобразить ее снова можно через главное меню, выбрав «View» - «ToolBox».

Стоит добавить, что в VBA Excel есть два встроенных диалоговых окна - MsgBox и InputBox.

MsgBox - это окно для вывода информации с возвратом числового значения кнопки, нажатой пользователем.

InputBox - это окно с приглашением пользователя ввести какую-либо текстовую информацию. Есть еще расширенная версия этого окна - Application.InputBox, которую можно использовать для записи адреса выделяемого диапазона ячеек и не только для этого.