В некоторых приложениях требуется возможность выбирать несколько пунктов из одного списка и создавать на их основе новый список, отображаемый в другом элементе управления ListBox. Примером такой ситуации может служить вкладка "Панель быстрого доступа" в диалоговом окне "Параметры Excel". На скриншоте ниже показано диалоговое окно с двумя элементами управления ListBox.
📌 Скачать файл пример, можно в конце статьи.
В скачанном примере вы увидите какие имена у элементов управления.
Кнопка "Добавить >>" добавляет элемент, выделенный в левом элементе управления ListBox, в правый элемент управления ListBox. Кнопка "Удалить" удаляет выделенный элемент из правого списка. Флажок определяет поведение при добавлении повторяющихся элементов в список. Если флажок "Разрешить дубликаты" не установлен, то значение переместится.
Код этого примера не так уж и сложен (расположен в модуле формы). Ниже приведена процедура, которая выполняется после нажатия на кнопку "Добавить >>".
Процедура, связанная с кнопкой "Удалить", будет попроще.
Обратите внимание, что ни одна из процедур не проверяет, действительно ли выбран элемент. Вместо этого свойство кнопки "Enabled" устанавливается в "False" на этапе разработки. Для активизации кнопок в нужное время вызывается другая процедура, которая называется EnableButtons.
Процедура EnableButtons вызывается не только из обработчиков событий cmdAdd_Click и cmdRemove_Click, но и из обработчиков событий изменения (Change) элементов управления ListBox. Код обработчиков событий изменения элементов управления ListBox и процедуры EnableButtons приведен ниже.
После сравнения свойства ListIndex с -1 возвращается значение True или False. Это значение присваивается свойству Enabled кнопок. В результате пользователь может нажать на кнопку только в случае, если выбран элемент.
Процедура для закрытия формы:
Для вызова формы используется следующая процедура, расположенная в ОБЫЧНОМ модуле:
Итак, попробуем разобрать строку - .AddItem Format(DateSerial(2000, i, 1), "mmmm"). Она выполняет добавление в элемент управления ListBox названий месяцев.
DateSerial(2000, i, 1):
- Функция DateSerial(year, month, day) создаёт дату по указанным год, месяц и день.
- В данном случае, создаётся дата, где год всегда равен 2000, день всегда равен 1, а месяц задаётся переменной i. Значение i изменяется от 1 до 12 в цикле For.
- Таким образом, при первом проходе цикла i = 1, будет создана дата 1 января 2000 года, при втором проходе i = 2 — дата 1 февраля 2000 года, и так далее до 1 декабря 2000 года.
Format(DateSerial(2000, i, 1), "mmmm"):
- Функция Format(expression, format) используется для форматирования значения в указанном формате.
- DateSerial(2000, i, 1) возвращает дату, которая передаётся в качестве аргумента expression.
- Формат "mmmm" указывает, что нужно вывести полное название месяца. Например, для даты 1 января 2000 года будет возвращено значение "Январь", для даты 1 февраля 2000 года — "Февраль" и так далее.
.AddItem:
- Метод AddItem добавляет элемент в элемент управления ListBox.
- В данном случае, в ListBox добавляется название месяца, отформатированное в строковом виде.
Таким образом, результатом выполнения этого кода является добавление всех 12 месяцев в ListBox, начиная с января и заканчивая декабрём.
На вызов формы я назначил кнопку:
✔ На моём телеграмм-канале появился анонс на следующую статью, которая выйдет 08.08.2024 с НОВЫМ Excel файлом-примером. Скачать его уже сейчас можно по этой ССЫЛКЕ