Формы VBA

Лекция № 32

 

 

До сих пор использовались диалоговые окна, которые встроены в VBA, а именно, функции MsgBox и InputBox. Хотя MsgBox и InputBox придают программам гибкость, которой могут обладать только интерактивные программы, их возможности в известной степени ограничены. При разработке более сложных программ, может понадобиться выводить диалоговые окна, позволяющие пользователям программ задавать при помощи одного диалогового окна несколько опций, выбирать пункты из списка или вводить в одном окне несколько значений. Часто возникает необходимость вместо встроенных окон, принадлежащих Excel, использовать диалоговые окна, соз­данные специально для разработанной программы.

VBA позволяет создавать и применять пользовательские диалоговые окна в написанных программах и процедурах при помощи добавления в проект объекта UserForm. Используя формы пользователя VBA (VBA User Forms), можно создавать диалоговые окна для вывода данных или получения значений от пользователя программы именно в том виде, который требуется программе. Например, можно вывести на экран диалоговое окно со списком различных вариантов формата даты и предоставить пользователю возможность выбрать из списка один из форматов.

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

Пользовательская форма UserForm предоставляет пользователю возможность создавать диалоговые окна разрабатываемых приложений. Она служит базой пользовательского диалогового окна, на которой в зависимости от решаемой задачи размещают элементы управления.

Диалоговое окно в VBA создается добавлением в проект объекта UserForm. Объект UserForm – это пустое диалоговое окно. Настройку диалогового окна можно выполнить добавлением к объекту UserForm (обычно называют просто форма) элементов управления. Каждому объекту UserForm присущи определенные свойства, методы и события, которые он наследует от класса объектов UserForm. Каждый объект UserForm включает в себя также модуль класса, в который можно добавлять собственные методы и свойства или код обработки событий формы.

Первый шаг в создании пользовательского диалогового окна состоит в добавлении к проекту новой формы (объекта User Form). Форма содержит рабочую область, в которую можно поместить элементы, необходимые для выполнения некоторого диалога пользователя с приложением.

Для добавления к проекту новой формы надо использовать команду VB-редактоpa Insert ® UserForm (Вставка ® UserForm). Редактор VBA добавляет к текущему проекту новую форму, присваивая ей по умолчанию имя UserFormN и используя ту же систему нумерации, что и для модулей. Редактор VBA выводит новую форму в режиме разработки, как показано на рис. 9.9. В режиме разработки можно добавлять (или удалять) элементы управления к форме, устанавливать свойства формы или ее элементов управления и выполнять другие манипуляции с внешним видом формы в интерактивном режиме. Когда форма выведена и используется как часть выполняющейся программы, она находится в режиме выполнения.

На рис. 9.9 показана добавленная в проект форма UserForm1. Широкая рамка вокруг формы указывает на то, что форма выделена. Сетка из точек наповерхности формы помогает выравнивать и контролировать размеры элементов управления, помещаемых на форму, и появляется только в режиме разработки. Панель элементов является «палитрой», с помощью которой можно выбирать элементы управления и добавлять их к форме

Объект UserForm можно переименовать так же, как стандартный модуль или модуль класса. Для этого в Properties Window (окно свойств) надо редактировать свойство (Name) и Caption этого объекта.

Когда форма выводится на экран в режиме разработки, можно протестовать ее поведение, используя команду Run ® Run Sub/User Form (Запуск ® Запуск подпрограммы/UserForm). После этого редактор VBA выведет форму режиме запуска и все ее элементы управления будут активными.

 

Рис. 9.9. Новая UserForm в режиме разработки

 

Рис. 9.10. Новая UserForm в режиме запуска