Как изменить размеры формы UserForm в приложении Excel?
В большинстве современных программ есть окна, которые можно менять по размеру. Например, в Excel, диалоговое окно "Найти и заменить" меняет свою высоту, когда вы нажимаете кнопку "Параметры".
Появляется диалоговое окно, на котором если щёлкнуть на кнопку под названием Параметры >>:
само диалоговое окно увеличивается:
Давайте и мы попробуем провернуть подобное мероприятие.
Рассмотрим, как можно динамически изменять размеры пользовательского диалогового окна (UserForm) в Excel. Чтобы сделать это, нужно изменить значения свойств Width (ширина) и Height (высота) объекта UserForm.
Возможно в другой статье позже я покажу, как можно сделать форму, размеры которой изменяются путем перетаскивания правого нижнего угла окна.
На скриншоте ниже показаны два состояния только что созданного диалогового окна: начальное и после нажатия на кнопку "Параметры".
Обратите внимание, что текст на кнопке (стрелки >>) изменяется в зависимости от размера диалогового окна.
📌 Скачать файл пример, можно в конце статьи.
Итак создание пользовательского диалогового окна.
Создаём форму с именем frmЛист:
После создания пользовательского диалогового окна, задайте его максимальный размер, который будет достаточен для доступа ко всем элементам управления. Затем, мы используя процедуру UserForm_Initialize, установим размеры диалогового окна по умолчанию.
Пример кода для этого:
В коде применим две константы, определенные в верхней части модуля.
- Const МаленькийРазмер As Integer = 124
- Const БольшойРазмер As Integer = 195
а дальше, проходя по каждому листу книги мы добавляем его имя в ListBox.
Обработка событий кнопок
Для изменения размеров формы, нам нужно добавить обработчики событий для кнопок. В примере ниже, кнопка "Параметры" изменяет высоту формы и текст на самой кнопке (код в модуле формы).
Обработка события при нажатии кнопки "ОК"
Когда вы или пользователь вашего продукта нажимает кнопку "ОК", происходит проверка, какие элементы списка были выбраны, и на основе этого выполняются соответствующие действия, такие как настройка печати: линия сетки и ориентации страницы. После выполнения всех действий, форма закрывается.
Я думаю, что изменение размеров формы UserForm в Excel — это хороший навык или подспорье если хотите, который может улучшить взаимодействие пользователя с программой. Так вы сможете создать динамически изменяющиеся формы, адаптированные под потребности ваших пользователей.
На макрос я назначил кнопку.
В связи с тем, что это демонстрационная программа, то при выборе листов для печати выходит следующее сообщение: