Чтение онлайн

на главную

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

* Процедура обработки события (event procedure) - это процедура типа Sub специального назначения. Признаю, что об этом я уже говорил. Но зато я не говорил о том, что подробности о процедурах обработки событий вы найдете в главе 14.

* Процедура типа Property (процедура свойства) выясняет или устанавливает значение свойства пользовательского объекта. О процедурах свойств не будет идти речь аж до главы 14, но здесь они упоминаются просто потому, что вы непременно увидите их среди опций диалогового ; окна Add Procedure (Добавление процедуры).

Строго говоря,

макрос в VBA- это процедура типа Sub, не имеющая (т.е. не требующая) параметров.

Макросы образуют единственный класс процедур типа Sub, способных выполняться непосредственно путем вызова по имени либо из редактора Visual Basic, либо из VBA-приложения. Чтобы выполнить процедуру типа Sub с параметрами, ее необходимо вызвать из другой процедуры. Работа с аргументами будет обсуждаться в этой же главе в разделе Привлекательные аргументы.

Каркас процедуры

Вот два примера процедур, по одной каждого из типов (Sub и Function):

Public Sub Субмарина

MsgBox Поднять перископ!

End Sub

Public Function ФункШин(ДатаРождения As Date)

ФункШин = DateDiff (yyyy, ДатаРождения, Date)

End Function

Как видите, каждая из процедур имеет начинающий процедуру оператор ее объявления, как минимум одну строку программного кода и завершающий оператор End. Подробнее эти элементы будут рассмотрены чуть позже в разделах Процедуры типа Sub и Процедуры типа Function.

Прежде чем создавать новую процедуру, нужно открыть окно программного кода для того модуля, в котором вы собираетесь эту процедуру разместить. Создайте новый модуль в соответствии с инструкциями, приведенными выше в разделе Добавление нового модуля в VBA проект, или откройте любой уже существующий модуль, дважды щелкнув на строке с его именем в окне проводника проекта.

После того как окно программного кода модуля будет открыто и станет активным, можно приступить к добавлению новой процедуры. Для начала просто вставьте в модуль оператор объявления процедуры и оператор ее завершения, т.е. оператор End. Это можно сделать двумя способами.

* Выбрать Insert Procedure и заполнить появившееся при этом диалоговое окно.

* Ввести соответствующие операторы вручную.

Печатать или использовать диалоговое окно?

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

Нужно только щелкнуть в том месте, где должна появиться процедура, напечатать строку с ее объявлением и нажать Enter. Вводить завершающие операторы End Sub и End Function не потребуется - редактор Visual Basic подставит подходящий оператор за вас.

Правда, возможно, что в самом начале освоения VBA вы будете чувствовать себя увереннее

с диалоговым окном. Чтобы использовать этот подход, щелкните на кнопке Insert Procedure (Добавить процедуру). (Опять же, наверное, вам придется сначала щелкнуть на этой небольшой полоске со стрелкой рядом с кнопкой Insert и только затем выбрать Procedure из раскрывшегося меню.) Можно также просто выбрать Insert=Procedure из меню.

Появится диалоговое окно Add Procedure (Добавление процедуры). В этом окне нужно напечатать имя процедуры в поле Name (Имя), затем выбрать с помощью переключателей Туре (Тип) и Scope (Область видимости) соответственно тип и область видимости, а также установить, если нужно, флажок All Local variables as Statics (Считать все локальные переменные статическими).

Я знаю, что до сих пор ничего не говорил об области видимости и о статических переменных, но на все эти вопросы вы найдете ответы ниже, в разделе Обзор области видимости.

После щелчка на кнопке ОК редактор Visual Basic вставит пару из объявления процедуры и оператора End в конец модуля, не обращая внимания на то, где находился текстовый курсор до того, как вы открыли диалоговое окно.

Наполнение каркаса процедуры

Создание операторов объявления и завершения процедуры, несомненно, является самым простым делом в процессе создания новой процедуры. А главная работа состоит в печатании операторов VBA, которые должны находиться между открывающим и закрывающим операторами. В этом разделе не предполагается вдаваться в детали того, что именно следует там печатать.

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

Процедуры типа Sub

Термин процедура типа Sub кажется мне довольно неуклюжим, но он достаточно точно отражает суть дела. В некоторых языках программирования суб процедурам и, или подпрограммами, называются процедуры, вызываемые главными процедурами. В VBA, хотя процедуры типа Sub и могут вызываться другими процедурами, главная процедура программы всегда является процедурой типа Sub. Это судьба.

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

Public Sub ПриятнаяПроцедура

Dim ДоброеСообщение As String

ДоброеСообщение = !

MsgBox ДоброеСообщение

(Другие операторы )

End Sub

Первая строка, объявление процедуры типа Sub, решает две жизненно важные задачи.

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

Поделиться:
Популярные книги

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6