Найти в Дзене

📌 Элемент управления ComboBox на пользовательской форме. Как заполнить. Пример решения

ComboBox позволяет пользователю выбирать значение из предварительно определенного списка. Этот список может быть статическим или динамическим, формируемым на основе данных в таблице. Сегодня подробно рассмотрим: как использовать данный элемент управления на пользовательской форме, как его заполнить и как установить связь между ComboBox и TextBox. 📢 Скачать исходник с примером кода вы можете в конце статьи 🔽 ▶️ Элемент управления ComboBox ➡️ Ключевые аспекты элемента управления ComboBox: ▶️ Исходные данные Для целей данного примера будем рассматривать данные предыдущего обзора: 🔷 Задача: создать на пользовательской форме выпадающий список используя элемент управления ComboBox и отобразить сведения о студентах на основе определенного в ComboBox критерия. Для отображения информации создадим пользовательскую форму с элементами управления ComboBox и TextBox: Вызов макроса будем задавать на "кнопку" размещенную на листе: Чтобы решение было универсальным определим именованный диапазон для
Оглавление

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

Сегодня подробно рассмотрим: как использовать данный элемент управления на пользовательской форме, как его заполнить и как установить связь между ComboBox и TextBox.

Элемент управления ComboBox на пользовательской форме. Как заполнить. Пример решения
Элемент управления ComboBox на пользовательской форме. Как заполнить. Пример решения

📢 Скачать исходник с примером кода вы можете в конце статьи 🔽

-3

▶️ Элемент управления ComboBox

Элемент управления ComboBox на пользовательской форме в Excel представляет собой выпадающий список, который позволяет пользователю выбирать один из доступных вариантов.
Элемент управления ComboBox на пользовательской форме в Excel представляет собой выпадающий список, который позволяет пользователю выбирать один из доступных вариантов.

➡️ Ключевые аспекты элемента управления ComboBox:

  • Редактирование и выбор: По умолчанию пользователь может выбирать значения только из списка. Однако, в зависимости от настроек можно позволить пользователю вводить свои значения.
  • События: ComboBox генерирует различные события, такие как Change, когда выбор пользователя меняется, или DropDown, когда выпадающий список открывается, например:
-5
  • Зависимость от данных: ComboBox может быть связан с данными в таблице. Это позволяет автоматически обновлять список в ComboBox при изменении исходных данных, что улучшает удобство использования и минимизирует возможные ошибки.
  • Стили и форматирование: Вы можете настраивать внешний вид ComboBox, включая цвета, шрифты и границы, чтобы он соответствовал общему стилю пользовательского интерфейса:
-6
  • Привязка к макросам: ComboBox может быть связан с макросами, что позволяет автоматизировать дополнительные действия при выборе конкретного значения, учесть возможные ошибки и предоставить соответствующее информационное сообщение пользователю.

▶️ Исходные данные

Для целей данного примера будем рассматривать данные предыдущего обзора:

-7

🔷 Задача: создать на пользовательской форме выпадающий список используя элемент управления ComboBox и отобразить сведения о студентах на основе определенного в ComboBox критерия.

Для отображения информации создадим пользовательскую форму с элементами управления ComboBox и TextBox:

-8

Вызов макроса будем задавать на "кнопку" размещенную на листе:

-9

Чтобы решение было универсальным определим именованный диапазон для данных выпадающего списка:

-10

▶️ Макрос для вызова формы

Для отображения созданной формы применим уже знакомый макрос:

-11

Теперь, при клике по кнопке будет отображена форма:

-12

▶️ Способы заполнения ComboBox

Чтобы заполнить ComboBox можно использовать любой из представленных ниже способов

🔘 Способ 1. Метод AddItem

-13

В данном случае непосредственно в коде с помощью метода AddItem указываются два предопределенных элемента "сдано" и "не сдано", которые в дальнейшем добавляются в выпадающий список.

🔘 Способ 2. Массив, создаваемый с помощью функции Array

Аналогично предыдущему способу можно задать предопределенные элементы выпадающего списка используя массив и функцию Array:

-14

🔘 Способ 3. Использование свойства RowSource

Данный способ является более универсальным т.к. позволяет сформировать динамический выпадающий список:

-15

Путем установки свойства RowSource на значение "критерий", список ComboBox будет заполнен данными, соответствующими указанному "критерию".

При добавлении нового критерия в список, он также будет отражен в выпадающем списке:

-16

🔘 Способ 4. Использование цикла For Each (уникальный список значений)

Данный подход позволяет "перебирать" ячейки в диапазоне и добавлять их значения в список ComboBox, предотвращая при этом дубликаты.

Это позволит сформировать выпадающий список из уникальных значений используя непосредственно источник данных:

-17

🔔 Обратите внимание! в данном примере применено событие UserForm_Activate. О том, в чем разница мы объясняли в предыдущем обзоре.

📝 Тестируем результат

Какой бы из рассмотренных способов вы бы ни выбрали, теперь у элемента управления ComboBox будет выпадающий список:

-18

▶️ Способы заполнения TextBox

Завершающим этапом решения задачи является связь ComboBox и TextBox таким образом, чтобы при выборе критерия поиска нужная информация отображалась в TextBox.

Для реагирования на действия пользователя при выборе критерия будем использовать событие "Change":

-19

Теперь при выборе критерия TextBox будет заполнен соответствующим списком значений:

-20

▶️ Дополнительно

Как обсуждалось ранее, заполнять TextBox можно не только списком значений, но отображать в нем результаты поиска.

Чтобы продемонстрировать данный пример изменим форму следующим образом:

-21

Теперь в качестве критерия используется значение столбца "Студент".

Для отображения выпадающего списка зададим следующий макрос:

-22

* В данном случае предполагается что источник не содержит повторяющихся значений

Пример отображения выпадающего списка в ComboBox
Пример отображения выпадающего списка в ComboBox

Для того, чтобы отобразить в набранный балл и результат в соответствующих TextBox аналогично рассмотренному выше примеру будем использовать событие "Change":

Отображаем значения в TextBox1 и TextBox2
Отображаем значения в TextBox1 и TextBox2

Макрос реализует автоматическое отображение значений из столбцов C и D в TextBox1 и TextBox2 на пользовательской форме при изменении выбранного значения в выпадающем списке ComboBox1.

Событие ComboBox1_Change запускается при изменении выбора в выпадающем списке. После чего, согласно выбранному значению в столбце B находим соответствующие значения в столбцах C и D и отображаем их в соответствующих текстовых полях (TextBox1 и TextBox2).

Если соответствующие значения не найдены, текстовые поля очищаются.

📝 Тестируем результат:

Теперь достаточно выбрать из выпадающего списка "нужного Студента", чтобы на форме отобразился результат:

-25

При наличии нескольких критериев поиска можно добавить на форму несколько ComboBox и связать их между собой аналогично зависимым выпадающим спискам.

Но, о том, как реализовать данный подход мы рассмотрим в следующих обзорах 😊. Оставайтесь на связи! 💕

-26
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР