Найти тему

📌 Как внести изменения в выпадающий список. Часть 1: удаляем значения из ComboBox

В одном из обзоров мы рассмотрели как создать и заполнить элемент управления ComboBox.

💡 Но что, если требуется удалить или изменить выбранное значение из списка, и как добавить новые данные в выпадающий список?!

Да, безусловно это возможно!😉

И в этой части обзора мы рассмотрим как удалить данные из выпадающего списка.

Как внести изменения в выпадающий список. Часть 1: удаляем значения из ComboBox
Как внести изменения в выпадающий список. Часть 1: удаляем значения из ComboBox

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

-3

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

Решение рассмотрим на примере данных предыдущего обзора:

-4

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

-5

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

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

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

А именно, для инициирования действий добавим элемент управления CommandButton (кнопку):

Элемент управления CommandButton
Элемент управления CommandButton

▶️ Как найти строку со значением и удалить

Позволить пользователю удалять данные из выпадающего списка (при отсутствии доступа к источнику) можно непосредственно на форме применив следующий макрос:

Этот макрос удалит строку из листа, если значение из ComboBox2 совпадает с найденным значением в столбце "C" на Листе1.
Этот макрос удалит строку из листа, если значение из ComboBox2 совпадает с найденным значением в столбце "C" на Листе1.

Чтобы "привязать" макрос к кнопке, дважды кликните по кнопке. Вам будет доступен редактор кода. Вставьте этот код в процедуру обработки события нажатия на кнопку.

🔔 Что важно!

  • Убедитесь, что вы заменили "Лист1" на имя вашего листа, на котором находится таблица.
  • Предполагается, что ComboBox2 уже заполнен значением. Если это не так, вам нужно будет добавить код для получения значения из ComboBox2.

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

-8

⚠️ Внимание! Предупредите пользователя, что удаление строк из таблицы может быть опасным действием. А при тесте макроса убедитесь, что у вас есть резервная копия данных.

➡️ После клика по кнопке выбранное значение будет удалено из исходных данных, а свойство Value в ComboBox будет установлено на пустое значение, тем самым очищая его:

-9

Но, как видите, проблема в том, что в источнике имеется нумерация. Да, он скрыт, и в данном случае это не принципиально.

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

-10

➡️ В этой версии при нажатии на кнопку будет выполнена операция удаления строк на листе "Лист1" (поменяйте "Лист1" на имя вашего листа) и перенумерация строк в столбце A (начиная с A2), основываясь на наличии значений в столбце B:

-11

▶️ Дополнения

Логично предположить, что для удаления строк отвечающих заданному параметру ComboBox1 следует изменить критерий поиска в коде:

-12

В данном случае при выборе определенной категории ⬇️

-13

➡️ Все товары данной категории будут удалены:

-14

Но, чтобы не зависеть от условия выбора (ситуации могут быть разные) дополним ранее рассмотренный макрос условием:

-15

В этой версии кода:

  • если ComboBox2 содержит значение, то будут удаляться строки, где значение ComboBox2 совпадает со значением в столбце C.
  • если ComboBox2 пуст, то будут удаляться строки, где значение ComboBox1 совпадает со значением в столбце B.

Чтобы удаленный параметр не отображался в ComboBox1 после того как форма уже открыта следует использовать индекс элемента:

-16

➡️ Теперь при удалении определенной категории изменения в выпадающем списке будут доступны без повторного открытия/закрытия формы:

-17

На наш взгляд последний приведенный вариант макроса является наиболее полным и максимально учитывает все возможные ситуации.

Но вы можете использовать любой вариант из рассмотренных, который в большей степени отвечает вашим потребностям и задачам.

А о том, как добавлять новое значение в ComboBox мы уже поговорим в следующем обзоре 😉

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

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

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