Как работать с элементами управления в пользовательском диалоговом окне 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.