Каждый элемент управления в форме UserForm, включая сам объект UserForm, создаётся так, чтобы реагировать на определённые события. Эти события могут происходить из-за действий пользователя или генерироваться самой программой Excel. Например, когда пользователь щелкает по кнопке (CommandButton), происходит событие Click для этого элемента. Так что можно написать код, который будет выполняться при возникновении этих событий.
Примеры событий
Иногда одно действие пользователя может вызвать сразу несколько событий. Например, щелчок на кнопке со стрелкой вверх на элементе управления SpinButton вызовет события SpinUp и Change. Когда пользовательское диалоговое окно отображается с помощью метода Show, Excel генерирует события Initialize и Activate для объекта UserForm. Событие Initialize происходит сразу после загрузки UserForm в память, но перед его отображением.
Как узнать больше о событиях?
Итак, для начала создадим две формы с элементами управления:
и
Потом напишем два кода для вызова формы №1 в простом модуле:
и «посадим» их на кнопки:
📌 Скачать файл пример, можно в конце статьи.
Далее, чтобы узнать больше о событиях, которые поддерживаются конкретным элементом управления, выполните следующие шаги:
1. Добавьте элемент управления в пользовательское диалоговое окно (мы уже сделали).
2. Дважды щелкните на элементе управления, чтобы открыть модуль кода для объекта UserForm. В окне редактора Visual Basic (VBE) появится пустая процедура обработки события по умолчанию.
3. Щелкните по раскрывающемуся списку в правом верхнем углу окна модуля. Вы увидите полный список событий, которые поддерживаются выбранным элементом управления.
4. Выберите событие из списка. После этого VBE создаст пустой обработчик события.
Чтобы получить дополнительные сведения о событиях, можно обратиться к интерактивной справочной системе. В ней также можно найти описание событий для различных элементов управления.
Сноска
Имя процедуры обработки событий включает имя объекта, который вызвал событие. Если вы измените название элемента управления, то необходимо будет внести изменения и в имя процедуры обработки события, так как оно не изменяется автоматически. Чтобы избежать лишней работы, рекомендуется присваивать описательные имена элементам управления перед созданием процедур обработки событий.
Рассмотрим события объекта UserForm
Итак, некоторые важные события, связанные с отображением и выгрузкой объекта UserForm:
- Initialize. Происходит перед загрузкой и отображением формы UserForm. Это событие не возникает, если UserForm был скрыт.
- Activate. Происходит в момент активизации объекта UserForm.
- Deactivate. Происходит в момент деактивизации объекта UserForm. Это событие не возникает при закрытии формы UserForm.
- QueryClose. Происходит перед выгрузкой объекта UserForm.
- Terminate. Происходит после выгрузки объекта UserForm.
Правильный выбор подходящего события для написания процедуры обработки является важным шагом. Также важно понимать последовательность выполнения событий. Например, метод Show вызывает события Initialize и Activate (в этом порядке). Команда Load вызывает событие Initialize. Команда Unload вызывает события QueryClose и Terminate (в этом порядке). Метод Hide не вызывает никаких событий.
Вот макросы который расположены в модуле UserForm1
А вот макросы который расположены в модуле UserForm2
Таким образом - понимание работы событий в UserForm и правильное их использование позволяет вам создавать более интерактивные и отзывчивые пользовательские интерфейсы в Excel. Следуйте правильной последовательности событий и своевременному созданию процедур обработки, что в конечном итоге поможет избежать многих последующих проблем и облегчит процесс разработки.
Если нажать кнопку «Только загрузка формы», то появится следующее сообщение:
Если щелкнуть по кнопке «Показ (отображение) формы», то произойдут другие события, но это уже сами посмотрите.
Если по коду вы будете идти пошагово, то увидите, как развиваются события. В общем скачав файл, можете побаловаться.