Эта статья показывает, как с помощью элемента управления ListBox можно создать удобный интерфейс для работы с листами активной рабочей книги Excel. Рассмотрим пример, в котором используется многоколоночный ListBox для отображения списка рабочих листов активной книги и предоставления пользователю информации о каждом из них. Разберем код и посмотрим, как он работает, чтобы вы могли его понять и применить на практике.
Что отображается в ListBox
В данном примере элемент управления ListBox отображает информацию о каждом листе активной рабочей книги в несколько столбцов. В этих столбцах содержатся следующие данные:
- Название листа – имя каждого листа в книге.
- Тип листа – (рабочий лист, диаграмма или лист диалога Excel версии 5/95).
- Количество непустых ячеек – число заполненных ячеек на листе.
- Состояние листа – отображается ли лист или он скрыт.
С помощью ListBox пользователь может легко просматривать и выбирать листы для работы, получая полезную информацию о каждом из них.
Инициализация формы UserForm
Когда форма (UserForm) загружается, запускается процедура UserForm_Initialize. Эта процедура собирает данные о каждом листе и подготавливает их для отображения в ListBox. Рассмотрим код этой процедуры и его действия.
Переменная OriginalSheet используется для хранения ссылки на исходный активный лист, чтобы к нему можно было вернуться в случае необходимости.
Здесь сначала определяется количество листов в активной книге и создается массив SheetData, который будет содержать данные о каждом листе. Массив имеет четыре столбца, где каждый столбец будет соответствовать определенной информации о листе.
Внутри цикла For Each перебираются все листы книги. Если текущий лист совпадает с активным, его позиция сохраняется в переменной ListPos, чтобы потом сделать его выбранным в ListBox.
В зависимости от типа листа заполняются соответствующие столбцы массива. Если это обычный рабочий лист, то в третьем столбце указывается количество непустых ячеек, а если это диаграмма или лист диалога, то значение устанавливается в "Н/Д" (не доступно).
В четвертом столбце записывается состояние видимости листа: "ИСТИНА" для видимых листов и "ЛОЖЬ" для скрытых. В конце каждой итерации счетчик ShtNum увеличивается, и цикл переходит к следующему листу.
После завершения цикла массив SheetData загружается в ListBox, а также устанавливается ширина столбцов и выбирается активный лист. Весь код инициализации формы можно увидеть в файле-примере.
📌 Скачать файл пример, можно в конце статьи.
Обработка событий в ListBox
Когда пользователь выбирает лист в ListBox, происходит событие lbxSheets_Click. Рассмотрим код этой процедуры.
Если флажок предварительного просмотра (chkPreview) установлен, выбранный лист будет активирован сразу после его выбора в ListBox.
Обработка нажатия на кнопку OK
Когда пользователь нажимает кнопку OK, запускается процедура cmdOK_Click, которая выполняет следующие действия:
Здесь создается объектная переменная UserSheet, которая ссылается на выбранный в ListBox лист. Если лист видимый, он сразу активируется. Если лист скрыт, пользователю предлагается сделать его видимым. В зависимости от ответа пользователя лист либо становится видимым и активируется, либо возвращается к исходному листу.
Обработка двойного щелчка на опции списка ЭУ ListBox
Процедура lbxSheets_DblClick выполняется при двойном щелчке по элементу ListBox. Она просто вызывает процедуру cmdOK_Click, что делает двойной щелчок эквивалентным нажатию кнопки OK.
Обработка нажатия на кнопку Отмена
Если пользователь решит отменить действие и нажмет кнопку Отмена, запустится процедура cmdCancel_Click, которая вернет его на исходный лист и закроет форму.
Обработка изменения состояния флажка предварительного просмотра
Флажок chkPreview позволяет пользователю выбирать, будет ли выбранный лист активироваться сразу после выбора в ListBox. Процедура chkPreview_Click обрабатывает изменения этого флажка.
Резюмируя можно сказать, что рассмотренный код позволяет создать довольно таки удобный интерфейс для управления листами в книге Excel. С помощью элемента управления ListBox можно быстро просматривать информацию о листах, активировать их, а также управлять видимостью листов.
✔ На моём телеграмм-канале появился анонс на следующую статью «Фильтрация списка ListBox в поле TextBox», которая выйдет в четверг 05.09.2024 с НОВЫМ Excel ФАЙЛ-ПРИМЕРОМ. Скачать его уже сейчас можно уже сейчас по этой ССЫЛКЕ. Так же там есть короткое видео работы программы.