Виды процедур. Процедуры — это самые важные функциональные блоки языка VBA

Процедуры и функции

Процедуры — это самые важные функциональные блоки языка VBA. В VBA вы можете выполнить только тот программный код, который содержится в какой-либо процедуре (обычной в стандартном модуле, событийной для элемента управления на форме и т. п.). Иногда начинающие пользователи пытаются записать команды прямо в область объявлений стандартного модуля и не могут понять, почему они не выполняются (сообщения об ошибке при этом не выдается — просто этот код становится "невидим" для компилятора).

Причина проста: в разделе объявлений модуля (когда в верхних списках редактора кода показываются значения General и Declarations) могут быть только объявления переменных уровня модуля и некоторые специальные инструкции для компилятора. Весь остальной программный код должен находиться внутри процедур.

В VBA предусмотрены следующие типы процедур:

- процедура типа Sub (подпрограмма) — универсальная процедура для выполнения каких-либо действий:

Sub Farewell()

MsgBox "Goodbye"

End Sub

Макрос в VBA — это процедура типа Sub, не имеющая параметров. Только макросы можно вызывать по имени из редактора VBA или из приложения Office. Все другие процедуры нужно вызывать либо из других процедур, либо специальными способами, о которых будет рассказано далее;

- процедура типа Function (функция) — набор команд, которые должны быть выполнены. Принципиальное отличие только одно: функция возвращает вызвавшей ее программе (или процедуре) какое-то значение, которое будет там использовано. Пример функции:

Function Tomorrow()

Tomorrow = DateAdd("d", 1, Date())

End Function

и пример ее вызова:

Private Sub Test1()

Dim dDate

dDate = Tomorrow()

MsgBox dDate

End Sub

В тексте функции необходимо предусмотреть оператор, который присваивает ей какое-либо значение. В нашем случае это строка:

Tomorrow = DateAdd("d", 1, Date())

В принципе, процедуры типа Sub тоже могут возвращать значения — при помощи переменных, передаваемых по ссылке (см. разд. 3.8.4). Зачем же тогда нужны функции? Все очень просто: функцию можно вставлять практически в любое место программного кода. Например, наш последний пример может выглядеть намного проще:

Private Sub Test1()

MsgBox Tomorrow()

End Sub

В VBA предусмотрены сотни встроенных функций (и гораздо большее количество функций предусмотрено в объектных моделях приложений Office).

Даже в нашем примере используются две встроенные функции: Date(), которая возвращает текущую дату по часам компьютера, и DateAdd(), которая умеет прибавлять к текущей дате определенное количество дней, недель, месяцев, лет и т. п. В VBA имеются также процедуры обработки событий (event procedure) - процедуры типа Sub специального назначения, которые выполняется в случае возникновения определенного события, например, при открытии формы или нажатии на ней кнопки.

Есть еще процедуры типа Property (процедуры свойства). Они нужны для определения свойств создаваемого вами класса, а поскольку созданием своих классов мы заниматься не будем, то их можно не рассматривать.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: