Ключевое слово Me является ссылкой на объект, содержащий выполняемый код (в данном случае – на пользовательскую форму UserForm1). Свойство Tag используется для сохранения какой-либо полезной информации о форме (например, о событиях, предшествующих закрытию формы).
Параметры элементов управления, размещенных на форме, можно задать при ее инициализации (при обработке события Initialize, происходящего при отображении формы) или непосредственно перед вызовом метода Show формы. Например, следующий код создает пользовательскую форму (рис. 4) для замены значений в строке с номером 5 рабочего листа Excel:
Почти все описанные выше элементы управления могут быть вставлены не только в пользовательскую форму, но и прямо в документ (например, на рабочий лист Excel или на страницу документа Word), активизируя его. Это позволяет создать удобные формы и шаблоны для ввода информации и ее обработки. Для этого используются инструменты панелей «Формы» и «Элементы управления».
Возможности среды программирования VBA расширяются за счет применения дополнительных элементов управления. Файлы дополнительных элементов имеют обычно расширения VBX, OCX или DLL. Файлы VBX и OCX называют элементами управления ActiveX.
Дополнительный элемент управления – это многократно используемый компонент, являющийся самостоятельным объектом, реализованный обычно на C. Он имеет свои свойства и методы, как и любой другой объект.
Из программ VBA можно не только отображать пользовательские диалоговые окна, но и встроенные диалоговые окна. Для этого используется семейство Dialogs. Это семейство содержится в объекте Application (рис. 5).
Объекты Dialog принадлежат семейству Dialogs, которое содержит все встроенные диалоговые окна приложений MS Office. Можно создать новое диалоговое окно и добавить его в семейство. Для идентификации конкретного диалогового окна используется обращение Dialog(Индекс), где индекс задается константой, имеющей префикс “wdDialog”, за которым следует имя конкретного диалогового окна.
Более подробную информацию об этом классе можно получить, выполнив команду Просмотр объектов меню Вид редактора VBA. В списке «Классы» следует выделить данный элемент (Dialogs или Dialog) и в контекстном меню выбрать строку Справка. При вводе слова Dialog в коде программы редактор автоматически выдаст подсказку со списком используемых для выбора нужного окна констант (если включен режим подсказок). Например, вызов метода
отображает встроенное диалоговое окно «Печать» приложения Excel. При вызове метода Show можно указывать аргументы для встроенных диалоговых окон.
5.13. Создание пользовательских меню и панелей инструментов
Меню в Microsoft Office, как и панели инструментов, могут перемещаться по экрану, «вставать» в определенные места, могут содержать кнопки с графическими изображениями и текстовые элементы.
Обобщением панелей инструментов и меню являются панели команд, которые программно реализованы на основе объекта CommandBar. Эти панели могут выглядеть, как меню или как панели инструментов, но процесс их создания, изменения и управления ими осуществляется с помощью единых средств.
Семейство CommandBars содержится в объекте Application (рис. 6). Каждый объект CommandBar содержит, в свою очередь, семейство объектов CommandBarControl. Эти объекты принадлежат одному из трех типов: CommandBarButton, CommandBarComboBox или CommandBarPopUp.
Объект CommandBarButton представляет либо кнопку, либо элемент меню, которые выполняют команду или вызов подпрограммы.
Объект CommandBarComboBox представляет поле ввода, раскрывающийся список или поле со списком.
Объект CommandBarPopUp отображает меню и вложенные меню (подменю фактически представляют собой такой же объект CommandBar, содержащийся в объекте CommandBarPopUp).
Для идентификации конкретного объекта семейства используется ссылка вида CommandBars(Индекс), где в качестве индекса указывается имя или номер, указывающие нужный объект, а в качестве результата возвращается ссылка на объект.
Для создания панели команд с помощью кода VBA можно использовать метод Add семейства объектов CommandBars. Этот метод имеет следующие аргументы: Name – имя новой панели команд (может использоваться в качестве индекса для ее идентификации в будущем), Position – положение панели на экране (в качестве значения могут использоваться специальные константы, значения которых можно посмотреть в справочной системе при просмотре соответствующих объектов), MenuBar – значение типа Boolean (True – панель превращается в активную строку меню, False – создается панель инструментов), Temporary – значение типа Boolean (True означает, что панель удаляется после завершения приложения). Эта функция возвращает в качестве результата ссылку на объект CommandBar.
Объект CommandBar имеет следующие основные свойства:
– Visible – панель является видимой, если это свойство установлено в True; если значение свойства равно False, панель является скрытой;
– Position – положение панели на экране, задается с помощью специальных констант;
– Controls – семейство объектов CommandBarControls, элементы которого содержатся на панели команд.
– Манипулировать объектами CommandBar можно с помощью следующих основных методов:
– Delete – удаление панели команд (для встроенных панелей использоваться не может);
– Reset – восстановление исходного состояния встроенной панели команд;
Для создания нового объекта CommandBarControl можно использовать метод Add семейства объектов CommandBarControls. Этот метод имеет следующие аргументы: Type – тип добавляемого объекта (задается константами: msoControlButton – кнопка или элемент меню, msoControlComboBox – поле со списком, msoControlDropdown – раскрывающийся список, msoControlEdit – поле ввода, msoControlPopup – вложенное меню); ID – используется для идентификации встроенного элемента управления (для элементов, определенных пользователем, остается пустым); Parameter – для элементов управления, определенных пользователем, обычно остается пустым; Before – индекс элемента управления, перед которым добавляется данный элемент (число или имя, если оставлен пустым, элемент добавляется в конец); Temporary – если это значение равно True, элемент удаляется при закрытии приложения.
Объект CommandBarControl имеет следующие основные свойства:
– Caption – текстовая строка, отображаемая в заголовке (для создания горячей клавиши используется символ ‘&’);
– CommandBar – объект CommandBar, который является вложенным меню элемента управления (используется только для CommandBarPopUp);
– Enabled – если принимает значение True, элемент управления доступен и может быть выбран пользователем, если False – элемент становится недоступным;
– OnAction – имя подпрограммы VBA, которая будет выполнена при активизации элемента управления пользователем;
– Style – определяет, что будет отображено на кнопке: текст, рисунок или комбинация текста и рисунка (принимает значения констант msoButtonAutomatic, msoButtonCaption, msoButtonIcon, msoButtonIconAndCaption);
– Visible – если установлено в True, элемент будет видимым, при значении False – скрытым.
Таким образом, появляется возможность управления панелями и меню не только «вручную», но и программно, с помощью кода, вставляемого в процедуры. Ниже приведены примеры таких процедур и результаты их выполнения.
Создание новой панели инструментов (результат выполнения процедуры приведен на рис. 7, а):
Кнопкам созданной панели приписаны подпрограммы Процедура1, Процедура2 и Процедура3. Для проверки работоспособности приведенной выше подпрограммы можно использовать в качестве таких процедур заглушки вида: