Основы офисного программирования и язык VBA


Объект UserForm (диалоговое окно), коллекция UserForms (диалоговые окна)


В этой лекции мы рассмотрим основные объекты, связанные с организацией работы диалоговых окон. К ним относятся отдельные диалоговые окна, их коллекции и стандартные элементы управления, которые можно размещать в диалоговых окнах.

Объект UserForm (диалоговое окно или форма) - прямоугольное окно на экране с размещенными на нем элементами управления - важная часть пользовательского интерфейса. Создание и использование диалоговых окон было рассмотрено в предыдущей лекции. Здесь мы кратко опишем свойства класса UserForm и элементов управления.

Все загруженные в приложение диалоговые окна образуют коллекцию UserForms (диалоговые окна). Она обладает стандартными свойствами Count (Количество), Item (в других коллекциях Item часто выступает как метод, хотя суть от этого не меняется) и методом Add (Добавить). Значение свойства Count равно количеству элементов в коллекции; Item позволяет получить доступ к отдельному элементу коллекции (здесь Item - свойство "по умолчанию", т. е. может опускаться), метод Add (имя_формы) позволяет поместить в коллекцию новое диалоговое окно. Обращение к элементу коллекции имеет вид:

UserForms. Item. (index)

Или

UserForms (index)

Параметр index - число от 0 до UserForms. Count - 1, задающее номер элемента в коллекции. Во втором варианте определенное по умолчанию свойство Item опущено. Заметьте, коллекцию UserForms составляют не формы, спроектированные для работы с документом, а только загруженные формы, те, для которых был выполнен метод Load.

Как и другие объекты-коллекции, UserForms можно использовать для организации цикла по всем загруженным диалоговым окнам приложения. Выражение UserForms (index) можно подставлять как аргумент функции, имеющий тип диалогового окна UserForm

Эта коллекция корректно работает с действительно загруженными окнами, но дает странные результаты, когда загруженных форм нет. Вот небольшой пример работы с документом, имеющим две формы с именами frmMy1 и frmMy2:

Public Sub PropOfForm () Dim MyForm As UserForm




Начало  Назад  Вперед