Всем привет! 👋
В продолжение темы заполнения элементов управления на пользовательской форме предлагаем рассмотреть решение для создания зависимых выпадающих списков.
Не забудьте поблагодарить автора лайком и оставить комментарий 💕.
📢 Скачать исходник с примером кода вы можете в конце статьи 🔽
Напомним, что процедура размещения ComboBox на пользовательской форме была подробно рассмотрена обзоре:
В том случае, если на форме расположено более одного ComboBox и требуется установить связь между (в зависимости от размещения исходной информации) может быть применим один из рассмотренных ниже способа.
▶️ Способ 1. Информация зависимых ComboBox находится в одном столбце
Для целей данного примера рассмотрим следующий источник данных:
Для отображения информации подготовим следующую форму:
🔘 Для отображения выпадающего списка категории товара применим макрос:
Данный макрос добавит каждое непустое значение из ячеек первой строки в ComboBox1:
🔘 Чтобы "связать" два ComboBox применим событие ComboBox1_Change:
➡️ Данный макрос будет искать столбец, соответствующий выбранному значению из ComboBox1, и затем заполнять ComboBox2 данными из этого столбца, начиная со второй строки и до последней заполненной ячейки:
▶️ Способ 2. Информация зависимых ComboBox находится в разных столбцах
Для целей данного примера рассмотрим следующий источник данных:
Для отображения информации подготовим следующую форму:
🔘 Чтобы добавить выпадающий список для категории товара применим макрос:
Данный макрос заполняет выпадающий список элемента управления ComboBox1 уникальными значениями из столбца B, начиная с ячейки B2 и до последней заполненной ячейки в столбце. При этом дубликаты и пустые ячейки игнорируются.
➡️ Таким образом, пользователю предоставляется список выбора, который включает только уникальные значения из указанного диапазона.
🔘 Чтобы отобразить список в ComboBox2 на основе выбранного значения из ComboBox1 применим макрос:
➡️ Таким образом для выбранного значения в ComboBox2 будет сформирован соответствующий зависимый выпадающий список:
🔘 Чтобы отобразить соответствующую стоимость товара применим событие ComboBox2_Change:
Когда пользователь выбирает значение в ComboBox2, код ищет выбранное значение в столбце С на указанном листе.
➡️ Если такое значение найдено, то соответствующее значение из столбца D записывается в TextBox1 на форме. Это позволяет отобразить информацию, связанную с выбранным значением, в текстовом поле TextBox1:
🔔 Для очистки содержимого TextBox при смене категории товара правильным способом будет использование TextBox1.Value = "".
Данную строку кода следует добавить к событию ComboBox1_Change:
➡️ Теперь, при смене категории товара поле TextBox будет очищено:
В заключение отменим, что элемент управления ComboBox в зависимости от настроек позволяет не только выбирать значения из списка, но и вводить новые значения и изменять существующие.
Но, о том, как реализовать данную возможность поговорим в следующих обзорах 😉.
📍 Рекомендуемые статьи 🔽