Найти в Дзене
VBA Excel с нуля

VBA Excel № 159. Создание меню в UserForm с использованием CommandButton и ListBox

Иногда бывает необходимо создать меню внутри формы UserForm, чтобы пользователи могли выбирать различные параметры. В этой статье мы рассмотрим два способа достижения этой цели: с помощью элементов управления CommandButton и ListBox. На скриншоте показан пример формы UserForm (как создавать формы надеюсь вы уже знаете, раз дошли до этой статьи), где используется элемент управления CommandButton для создания простого меню. Такое меню легко реализовать, а код, обеспечивающий его работу, не сложен. Каждый элемент управления CommandButton имеет свою собственную процедуру обработки событий. Например, процедура ниже выполняется после нажатия кнопки CommandButton1. Когда пользователь нажимает на CommandButton1, диалоговое окно UserForm скрывается, вызывается макрос Макрос1, а затем диалоговое окно UserForm закрывается. Аналогичные процедуры выполняются и для других кнопок CommandButton. На следующем скриншоте показан пример создания меню с помощью элемента управления ListBox. Это меню можн
Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Иногда бывает необходимо создать меню внутри формы UserForm, чтобы пользователи могли выбирать различные параметры. В этой статье мы рассмотрим два способа достижения этой цели: с помощью элементов управления CommandButton и ListBox.

Использование элементов управления CommandButton

На скриншоте показан пример формы UserForm (как создавать формы надеюсь вы уже знаете, раз дошли до этой статьи), где используется элемент управления CommandButton для создания простого меню. Такое меню легко реализовать, а код, обеспечивающий его работу, не сложен.

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

Каждый элемент управления CommandButton имеет свою собственную процедуру обработки событий. Например, процедура ниже выполняется после нажатия кнопки CommandButton1.

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

Когда пользователь нажимает на CommandButton1, диалоговое окно UserForm скрывается, вызывается макрос Макрос1, а затем диалоговое окно UserForm закрывается. Аналогичные процедуры выполняются и для других кнопок CommandButton.

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

Использование элемента управления ListBox

На следующем скриншоте показан пример создания меню с помощью элемента управления ListBox. Это меню можно легко изменять, добавляя новые пункты, не изменяя размер UserForm. Перед отображением формы вызывается процедура Initialize, которая добавляет опции в ListBox.

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

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

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

Эта процедура проверяет, какой элемент выбран в ListBox, и выполняет соответствующий макрос. Если не выбран ни один элемент (ListIndex равно -1), появляется сообщение с просьбой выбрать макрос.

Также можно настроить обработку событий двойного щелчка мышью для элемента управления ListBox. После двойного щелчка выполняется соответствующий макрос.

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

Подводя итог можно сказать, что использование элементов управления CommandButton и ListBox в UserForm предоставляет гибкие возможности для создания пользовательских меню. Эти элементы позволяют управлять выполнением макросов на основе пользовательского выбора, обеспечивая интуитивно понятный интерфейс.

Для удобства я назначил кнопки на рабочем листе, для выполнения кода:

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

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