- •2.2 Окно проводника проекта (Project Explorer) и структура проекта vba
- •Из чего состоит код?
- •2.3 Работа с редактором кода (Code Editor)
- •2.3.1 Как открыть редактор кода и как он устроен
- •2.3.2 Список объектов и список событий
- •2.3.4 Как редактор помогает писать код
- •Способы запуска макросов
- •Формы и элементы управления
- •3.4. Окно Properties — управление свойствами
- •3.5. Важнейшие свойства элементов управления
- •3.6. Обработчики событий и подробности о редактировании кода
- •3.7. Свойства и методы элементов управления в программах
- •3.8. Выводы
- •Из чего состоит код?
- •. Переменные, операторы, константы
- •4.1 Основы синтаксиса
- •4.2 Переменные и типы данных
- •4.3 Операторы
- •4.4 Константы
- •5. Понятие процедур и функций. Создание собственных макросов
- •5.1 Виды процедур
- •5.2 Область видимости процедур. Создание процедур (макросов)
- •5.3 Передача параметров
- •5.4 Вызов и завершение работы процедур
- •6. Выполнение команд по условию (ветвление)
- •6.1 Оператор If ... Then
- •6.2 Оператор Select Case
- •7. Безусловный переход к любой точке программы
- •8. Повторяющиеся команды (циклы). Циклы, управляемые счетчиком. Циклы, выполняющиеся или завершающиеся по условию.
- •9. Встроенные функции Visual Basic
- •9.1 Что такое встроенные функции
- •9.2 Функции преобразования и проверки типов данных
- •9.3 Строковые функции
- •9.4 Функции для работы с числовыми значениями
- •9.5 Функции для работы с датой и временем
- •9.6 Функции для форматирования данных
- •9.8 Функции для работы с массивами
- •10. Запрос данных и выдача сообщений в стандартных диалоговых окнах Visual Basic
- •11. Типы ошибок в программах. Перехват ошибок времени выполнения
- •11.1. Типы ошибок
- •11.2. Перехват и обработка ошибок времени выполнения
- •12. Инструменты отладки программ
- •12.1. Тестирование
- •12.2. Переход в режим паузы
- •12.3. Действия в режиме паузы
- •12.4. Окно Immediate
- •12.5. Окно Locals
- •12.6. Окно Watches
- •14. Формы, элементы управления и события
- •14.1. Для чего нужны формы
- •14.2. Создание форм и самые важные свойства и методы форм
- •14.3. Элементы управления
- •14.3.1. Что такое элемент управления
- •14.3.2. Элемент управления Label
- •14.3.3. Элемент управления TextBox
- •14.3.4. Элемент управления ComboBox
- •14.3.5. Элемент управления ListBox
- •14.3.6. Элементы управления CheckBox и ToggleButton
- •14.3.7. Элементы управления OptionButton и Frame
- •14.3.8. Элемент управления CommandButton
- •14.3.9. Элементы управления ScrollBar и SpinButton
- •14.3.10. Элементы управления TabStrip и MultiPage
- •14.3.11. Элемент управления Image
5.4 Вызов и завершение работы процедур
С примерами вызова процедур и функций из кода мы уже сталкивались. Для этого достаточно записать имя процедуры или функции, передать ей необходимые параметры, а для функции еще и принять возвращаемое значение. Одни процедуры можно вызывать из других процедур. Но как дать пользователю возможность запустить самую первую процедуру?
В нашем распоряжении следующие возможности:
создать макрос (т. е. специальную процедуру, не принимающую параметров, в модуле NewMacros) и запустить его по имени, кнопке или комбинацией клавиш. Макрос затем может вызывать и другие процедуры;
создать форму и воспользоваться набором событий этой формы и элементов управления на ней или просто элементом управления на листе Excel или документе Word;
назначить процедуре специальное имя (AutoExec(), AutoNew() и т. п.). Полный список таких специальных имен можно посмотреть в документации. Правда, поскольку раньше эти возможности активно использовались вирусами, в Office 2007 по умолчанию эти макросы запускаться не будут. Для того чтобы обеспечить им (и многим другим макросам) возможность запуска, необходимо изменить установленный уровень безопасности в меню Сервис | Макрос | Безопасность или обеспечить цифровые подписи для ваших макросов;
вместо специального имени для макроса использовать событие: например, событие запуска приложения, событие открытия документа и т. п. Это рекомендованный Microsoft способ обеспечения автоматического запуска программного кода;
можно запустить приложение из командной строки с параметром /m и именем макроса, например:
winword.exe /mMyMacros
Очень удобно в этом случае использовать ярлыки, в которых можно указать этот параметр запуска.
В VBA вполне допустима ситуация, когда функция запускает на выполнение саму себя. Однако подобных вызовов лучше избегать (по возможности заменяя их на циклы). Причина — проблемы с читаемостью и возможное (в случае бесконечного запуска) исчерпание оперативной памяти (переполнение стека), чреватое серьезными системными ошибками.
Для завершения выполнения процедуры в VBA предусмотрены конструкции End и Exit. Синтаксис их очень прост:
Exit Sub
End Sub
Делают они одно и то же — завершают работу текущей процедуры. Однако используются в разных ситуациях:
оператор End — это завершение работы процедуры после того, как все сделано. После оператора End код процедуры заканчивается;
оператор Exit — это немедленное завершение работы функции в ходе ее работы. Обычно помещается в блок оператора условного перехода, чтобы произвести выход, как только выяснилось, что функции по каким-то причинам дальше выполняться не нужно (например, дальше идет код обработчика ошибок).
6. Выполнение команд по условию (ветвление)
Операторы условного перехода (операторы ветвления) — одни из самых важных и часто используемых элементов в языках программирования. Общий принцип их работы прост: проверяется соответствие каким-то условиям (истинность или ложность каких-либо выражений) и в зависимости от этого выполнение программы направляется по одной или другой ветви. В VBA предусмотрено два оператора условного перехода: If...Then и Select Case.
