Макросы определен в Excel

В Excel VBA-макросы существуют в двух различных вариантах: процедуры Sub и процедуры-функции Function . В этой статье вы узнаете, чем они отличаются.

Процедуры Sub

Вы можете думать о процедуре Sub как о новой команде. В вашей книге Excel может быть любое количество процедур Sub. На рис. 206.1 показана простая процедура Sub. Если выполнить этот код, он переключит режим отображения разрывов страниц для активного листа.

Рис. 206.1. Простая, но полезная процедура VBA

Процедуры Sub всегда начинаются с ключевого слова Sub, имени макроса и пары круглых скобок. Выражение End Sub означает конец процедуры. Строки между этим ключевым словом и выражением содержат код процедуры.

Вы выполняете процедуры Sub несколькими способами. Например, можно нажать Alt+F8, а затем выбрать макрос в окне Macros. Другие способы выполнения процедур Sub описаны в статье «Как выполняются макросы в Excel».

Если вы записываете макрос, это всегда процедура Sub.

Функции VBA

Вторым типом процедур VBA являются процедуры-функции Function, которые всегда возвращают одно значение (так же, как и функция листа всегда возвращает одно значение). Процедура-функция VBA может быть выполнена другими процедурами VBA или использована в формулах листа, как и любая другая встроенная функция Excel.

Рис. 206.2. Процедура-функция Function, возвращающая имя пользователя

На рис. 206.2 вы можете видеть пользовательскую функцию, названную User. Она просто возвращает имя пользователя (которое указано в окне Параметры Excel). Процедура-функция выглядит так же, как и процедура Sub. Только обратите внимание, что процедура-функция начинается с ключевого слова Function, а заканчивается оператором End Function.

Вот пример формулы листа, которая использует эту функцию: =PERSONAL.XLSB!User(). Эта формула предполагает, что функция User определена в вашей личной книге макросов. Если функция определена в книге, содержащей формулу, можно опустить ссылку на файл и использовать следующую формулу: =User()