[an error occurred while processing this directive] | |
1-й час. Знакомство с Visual Basic for Applications 3-й час. Работа с элементами управления 4-й час. Переменные и константы 6-й час. Логика условных операторов 7-й час. Циклические вычисления 9-й час. Основные объекты Excel 11-й час. Редактор Visual Basic 15-й час. Автоматизация экранных форм 20-й час. Получение внешних данных |
24-й час. Выполнение процедурВ этом часе мы рассмотрим процедуры, которые выполняются при открытии и закрытии рабочих книг, а также при активизации рабочих листов. Excel предлагает несколько путей реализации таких процедур. В этом часе будут рассмотрены следующие вопросы.
Автоматическое выполнение процедурЧасто возникают ситуации, когда какие-либо процедуры необходимо выполнить при открытии или закрытии рабочих книг. Excel предлагает простой способ выполнения таких процедур. Если, например, процедура должна выполняться при открытии книги, то просто назовите ее Auto_Open. Процедуру Auto_Open можно использовать для решения следующих задач:
Процедура, выполняемая при закрытии рабочей книги, называется Auto_Close. Вот типичные задачи, выполняемые этой процедурой:
Можно использовать обе или только одну из этих процедур. Имена этих процедур не чувствительны к применяемому регистру, т.е. их можно писать как строчными, так и прописными буквами. Если рабочая книга открывается из процедуры VBA, то процедуры Auto не выполняются. В этом случае для выполнения этих процедур используется метод RunAutoMacros. Приведем примеры процедур Auto_Open и Auto_Close. Откройте новую рабочую книгу, вставьте модуль и в этом модуле создайте процедуру Auto_Open, код которой показан в листинге 24.1. Листинг 24.1. Пример процедуры Auto Open
Эта процедура вводит в рабочий лист текущую дату и время и удаляет из окна Excel полосы прокрутки, строку формул и строку состояния. Если надо восстановить внешний вид окна Excel после закрытия этой рабочей книги, создайте еще процедуру Auto_Close, код которой приведен в листинге 24.2. Листинг 24.2. Пример процедуры Auto Close
Сохраните эту рабочую книгу пол именем Час24. Для тестирования процедур закройте рабочую книгу, а затем откройте ее снова. Вы увидите текущую дату в ячейке В1, а также заметите отсутствие полос прокрутки, строки формул и строки состояния (рис. 24.1). Закройте эту рабочую книгу и откройте новую, чтобы убедиться в том, что привычный вид окна Excel восстановлен. Рис. 24.1. Процедуры, выполняемые при открытии рабочих книг, полезны для настройки среды Excel Процедуры, выполняемые при наступлении событийВ этом разделе рассмотрим процедуры, которые вызываются на выполнение при наступлении определенных событий, например двойной щелчок на каком-либо элементе интерфейса, активизация рабочего листа, переход в окно приложения, ввод данных в ячейку листа и т.д. Имена процедур, свойств и методов, которые выполняются в ответ на события, должны начинаться с On. Excel поддерживает следующие On-процедуры.
Многие из приведенных здесь событий в справочной системе VBA помечены как hidden (скрытый). Это указывает на то, что они не отображены в окне просмотра объектов, но не означает, что они не доступны и их нельзя использовать. Обычно Оn-свойства объектов устанавливаются в процедуре Auto_Open рабочей книги. Например, можно предусмотреть сохранение рабочей книги при наступлении события OnData либо проверить корректность введенных данных после события OnEntry. Продемонстрируем на небольшом примере, как "'работают" события.
Для следующего примера в процедуру Auto_Open введите строку кода
Теперь создайте процедуру ПроверкаА1, код которой приведен в листинге 24.3. Листинг 24.3. Процедура ПроверкаА1
Перейдите в Лист1 и выберите ячейку А1. Введите число 4 и нажмите <Enter>. Появится окно с сообщением, что число должно быть не меньше 5. Щелкните на кнопке ОК для закрытия окна сообщения. Создание надстроек ExcelВ этом часе вы уже познакомились с двумя способами автоматического выполнения процедур (при открытии или закрытии рабочих книг и в ответ на наступление определенных событий). Но предположим, что необходима автоматическая загрузка определенных процедур при открытии самой программы Excel. Перечисленные выше способы автоматического выполнения процедур в этом случае не подходят. Выход есть и в данной ситуации: надо создать необходимые процедуры и сохранить рабочую книгу их содержащую, как надстройку. Рабочая книга-надстройка содержит информацию, созданную пользователем, например специальную структуру и оформление рабочего листа или процедуры. Книгу-надстройку нельзя отрыть (как обычную рабочую книгу) и изменить, но она может содержать средства настройки, которыми пользователь может управлять. Обычно надстройки содержат следующее:
В следующем примере мы создадим функцию, вычисляющую комиссионные проценты, и сохраним рабочую книгу, содержащую эту функцию, как надстройку. Затем применим созданную функцию.
Надеюсь, этот маленький пример ясно показал основную идею создания и использования надстроек. РезюмеВ этом часе вы получили тот уровень знаний о VBA, который необходим для автоматизации выполнения процедур. Вы узнали, что процедура Auto_Open автоматически выполняется при открытии рабочей книги, a Auto_Close - при закрытии. Вы также познакомились с процедурами, выполняемыми при наступлении определенных событий. Наконец, вы узнали, что такое надстройки Excel, как их создавать и использовать. Вопросы и ответыВопрос. Можно ли процедуру, выполняемую при открытии рабочей книги, назвать не Auto_Open, а другим именем? Ответ. Нет, в данном случае имя процедуры "работает" как спусковой крючок для автоматического выполнения процедуры. Вопрос. Как сделать, чтобы процедура, сохраненная в книге-надстройке, была доступна всегда? Ответ. Сохраните ее в личной книге макросов. ПрактикумС помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении. Тесты
УпражнениеОткройте новую рабочую книгу и создайте процедуру Auto_Open, которая должна выполнять следующие операции:
Протестируйте процедуру. |
[an error occurred while processing this directive] |