Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

420

Часть IV. Пользовательские формы

назначить элементу управления L is t B o x процедуру, которая изменяет текст элемента управления L a b e l при выборе элемента списка. Подобное поведение элементов управ­ ления подробно рассмотрено далее.

Закрытие пользовательского диалогового окна

Для закрытия формы U serF orm l воспользуйтесь командой U n loa d , как показано ниже:

U nload U serForm l

Если же код находится в модуле кода формы U serF orm , воспользуйтесь следующим оператором:

U nload Me

В этом случае ключевое слово Me применяется для идентификации пользовательской формы.

Обычно в коде VBA команда U n lo a d выполняется только после того, как форма U s­ erF orm выполнит все свои функции. Например, форма U serF orm может содержать элемент управления C om m andButton, который используется в качестве кнопки ОК.

Щелчок на этой кнопке приводит к выполнению заранее определенного макроса. Одна из функций макроса заключается в выгрузке формы U serF orm из памяти. В результате пользовательское диалоговое окно отображается на экране до тех пор, пока макрос, со­ держащий оператор U n lo a d , не завершает свою работу.

Когда форма U serF o rm выгружается из памяти, элементы управления, содержав­ шиеся на ней, возвращаются в первоначальное состояние. Другими словами, в коде нель­ зя обращаться к значениям, указываемым пользователем, после того как форма будет выгружена из памяти. Если значения, введенные пользователем, будут применяться поз­ же (после выгрузки диалогового окна U serF orm ), то необходимо присвоить их пере­ менной с областью действия P u b lic , которая определена в стандартном модуле VBA. Кроме того, значение всегда можно сохранить в ячейке листа.

Примечание

Окно формы UserForm автоматически выгружается из памяти после того, как пользователь щелкает на кнопке Закрыть (Close) (обозначается симво­ лом х в заголовке окна). Это действие также приводит к возникновению со­ бытия Q ueryClose объекта UserForm, за которым следует событие Term i­ n a te пользовательского диалогового окна.

Объект U serF orm может использовать метод H id e . После его вызова диалоговое окно исчезает, но остается в памяти, поэтому в коде можно получить доступ к различ­ ным свойствам элементов управления. Ниже приведен пример оператора, который скры­ вает диалоговое окно.

U se rF o rm l. H ide

Также можно воспользоваться следующим оператором (если ваш код находится в модуле кода объекта U serF orm ):

M e.Hide

Если по какой-либо причине пользовательское диалоговое окно должно быть немед­ ленно скрыто в процессе выполнения макроса, воспользуйтесь методом H id e в самом начале процедуры, а затем укажите команду D o E v e n ts . Например, в следующей проце-