1K подписчиков

VBA Excel № 155. Ссылка на элементы управления UserForm и их коллекции

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Как работать с элементами управления в пользовательском диалоговом окне VBA?

Работа с элементами управления в пользовательских формах VBA может показаться сложной, но, если понимать основные принципы, это становится проще. В этой статье мы рассмотрим, как ссылаться на элементы управления, как задавать их значения и как работать с коллекциями элементов управления. Давайте попробуем разобраться.

Ссылка на элементы управления в пользовательском диалоговом окне

Когда вы работаете с элементами управления, такими как текстовые поля (TextBox) или кнопки (Button) в пользовательских формах (UserForm), ваш код VBA обычно находится в модуле кода объекта UserForm. Но можно также ссылаться на элементы управления из универсального модуля кода VBA, указав имя объекта UserForm.

📌 Скачать файл пример, можно в конце статьи.

Итак, создадим форму. В диалоговом окне UserForm1 содержатся текстовые поля (TextBox1 и TextBox2):

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Пример отображения диалогового окна

Рассмотрим пример процедуры, которая отображает пользовательское диалоговое окно, назовем его UserForm1. Вот как это выглядит в коде VBA:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

При вызове формы увидим это:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Установка значений текстовых полей

Теперь, зная, что в диалоговом окне UserForm1 содержатся текстовые поля (TextBox1 и TextBox2). Мы можем задать значения этих текстовых полей по умолчанию. Для этого изменим процедуру следующим образом и переназначим кнопку на этот макрос:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

При вызове формы увидим это:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Использование события Initialize

Еще один способ установить значения по умолчанию для текстовых полей — это использовать событие Initialize объекта UserForm. Это событие запускается, когда форма загружается. Вот пример кода процедуры UserForm_Initialize:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Вызвать форму будем другой кнопкой, через процедуру ПоказатьДанные1

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Использование ключевого слова Me

Обратите внимание, что при обращении к элементу управления из модуля кода диалогового окна необязательно вводить имя объекта UserForm. Вместо этого можно использовать ключевое слово Me, которое ссылается на текущий объект UserForm. Это удобно, так как позволяет использовать автоматическую вставку объектов, что облегчает выбор имен элементов управления из раскрывающегося списка.

Если вы используете ключевое слово Me вместо имени UserForm, вам не придется изменять все ссылки в коде, если имя объекта UserForm изменится.

Коллекции элементов управления

Добавлю ещё один элемент управления CommandButton1 (кнопку Закрыть) которая закрывает форму:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

В VBA нет коллекций для каждого типа элемента управления, например, нет коллекции для всех TextBox. Однако можно определить тип элемента управления с помощью функции TypeName. Следующая процедура использует цикл For Each для просмотра всех элементов в коллекции Controls и подсчета количества текстовых полей (TextBox) в UserForm1:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

На макросы назначены кнопки:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Подводя итог. Работа с элементами управления в пользовательских формах VBA может быть простой и удобной, если использовать правильные подходы. Мы рассмотрели, как ссылаться на элементы управления, задавать их значения и работать с коллекциями элементов управления. Теперь вы можете использовать эти знания для создания более функциональных и удобных пользовательских форм в VBA.

СКАЧАТЬ ФАЙЛ ПРИМЕР