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

VBA Excel № 167. Идентификация нескольких выделенных элементов списка ListBox

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

Так как настроить и использовать элемент управления ListBox для выбора нескольких элементов? Давайте уточним различные режимы выбора и разберём примеры кода.

Анонс и файл-пример был выставлен на моём телеграмм-канале два дня назад (27.07.2024). Несколько читателей уже апробировали скачанный файл-пример.

Итак, для начала создадим форму:

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

Дадим наименования OptionButton и кнопке Ок:

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

Режимы выбора в ListBox

Свойство MultiSelect элемента управления ListBox может принимать одно из трёх значений:

  • 0 (fmMultiSelectSingle). Можно выбрать только один элемент. Это настройка по умолчанию.
  • 1 (fmMultiSelectMulti). Можно нажимать пробел или щёлкать мышью, чтобы выделять (или отменять выделение) элементы в списке.
  • 2 (fmMultiSelectExtended). Удерживая клавишу <Shift> и щёлкая мышью, можно расширять область выделения от предыдущего до текущего элемента. Также можно удерживать <Shift> и нажимать клавиши управления курсором для расширения выделенной области.

Особенности работы с несколькими выделенными элементами

Когда свойство MultiSelect установлено в 1 или 2, доступ к свойствам ListIndex или Value приведёт к ошибке. Вместо этого нужно использовать свойство Selected, которое возвращает массив с элементами, первый элемент которого имеет индекс 0.

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

Пример использования:

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

Пример кода для работы с несколькими выделенными элементами

Приведённый ниже код (код находится в модуле формы) демонстрирует, как обходить каждую опцию в ListBox и добавлять текст выделенных опций в переменную Сообщение. В конце все выделенные опции отображаются в окне сообщения.

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

Ну и надо заполнить ListBox какими-то данными. Например, днями недели. Есть пример кода в простом модуле, который делает это (массивом):

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

И при выполнении макроса:

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

Можно также заполнить ListBox названиями месяцев. Вот как выглядит макрос с пояснениями к строкам кода:

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

Если выбрать множественное выделение (с клавишей Shift), то в сообщении вы увидите:

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

Расширенное выделение, также подразумевает нажатую клавишу Shift.

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

В случае, если пользователь ничего не выбрал, то выйдет соответствующее сообщение:

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

Теперь, я надеюсь у вас есть некоторое понимание по использованию разных режимов выбора в ListBox и работе с несколькими выделенными элементами.

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

✔ На моём телеграмм-канале появился анонс на следующую статью, которая выйдет 01.08.2024 с НОВЫМ Excel файлом-примером. Скачать его уже сейчас можно по этой ССЫЛКЕ.