Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Элемент управления ListView

    Элемент управления ListView в VBA Excel: режимы отображения данных, заполнение ListView в режиме отчета, извлечение данных из выделенной строки.

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

    ListView (вид списка, представление списка) — это элемент управления, который позволяет отображать данные в виде значков, списка или таблицы внутри формы VBA Excel.

    Пустой ListView на форме

    Элемент управления ListView является мощным инструментом для форм VBA Excel (UserForm), позволяющим отображать данные в виде значков, простого списка или списка с возможностью организации данных в столбцы, аналогично таблице или проводнику Windows. Он предназначен для создания пользовательских интерфейсов в формах, где требуется удобный просмотр, сортировка и взаимодействие с данными.

    Элемент управления формы ListView чаще всего используется в VBA Excel для отображения данных в виде настраиваемого списка с колонками (в виде таблицы). Он является идеальным инструментом для отображения больших объемов информации в структурированном и удобном для пользователя виде.

    Элемент управления ListView входит в набор элементов управления Microsoft Windows Common Controls и чаще всего используется в приложениях, где требуется:

    • выводить списки с несколькими колонками;
    • сортировать данные;
    • добавлять иконки и изображения к элементам;
    • предоставлять пользователю удобный интерфейс для выбора и анализа информации.

    Например, с помощью ListView можно создать список товаров с ценами, каталог файлов, базу клиентов или даже мини-таблицу, которая будет взаимодействовать с листами Excel. Таким образом, ListView превращает обычные формы VBA в полноценные интерфейсы для работы с данными.

    Режимы отображения ListView

    ListView поддерживает несколько режимов отображения (свойство View):

    1. Значки (lvwIcon) – по теории: заголовки элементов с крупными иконками, а по факту: небольшие значки с текстом внутри.
    2. Мелкие значки (lvwSmallIcon) – заголовки элементов с небольшими иконками.
    3. Список (lvwList) – простой список элементов в один столбец.
    4. Отчет (lvwReport) – таблица с колонками и строками (аналог таблицы Excel). Это наиболее детализированный вид.

    На практике в VBA Excel чаще всего применяется режим Отчет, так как он позволяет создавать многостолбцовые списки (таблицы).

    Основные свойства ListView

    Вот ключевые свойства, которые позволяют гибко настраивать и эффективно использовать ListView:

    Свойство Описание
    View Определяет режим отображения (0 – Icon, 1 – SmallIcon, 2 – List, 3 – Report).
    ColumnHeaders Коллекция заголовков столбцов в режиме lvwReport. Позволяет добавлять, удалять и изменять столбцы.
    ListItems Коллекция элементов списка. В режиме lvwReport каждый ListItem может иметь основной текст и набор подэлементов (SubItems), которые отображаются в соответствующих столбцах.
    FullRowSelect Выделение всей строки. Логическое свойство. Если True, при выборе элемента выделяется вся строка, а не только первый столбец.
    GridLines Отображение сетки. Логическое свойство. Если True, отображаются линии сетки между столбцами и строками в режиме lvwReport.
    MultiSelect Множественный выбор. Логическое свойство. Если True, пользователь может выбирать несколько элементов в списке.
    Sorted Сортировка элементов. Логическое свойство. Если True, элементы в списке будут автоматически отсортированы по столбцу, указанному в свойстве SortKey.
    SortKey Ключ сортировки. Целое число, указывающее индекс столбца (начиная с 0), по которому будет производиться сортировка, если установлено в True.
    SortOrder Порядок сортировки. Определяет порядок сортировки (lvwAscending — по возрастанию, lvwDescending — по убыванию).
    LabelEdit Возможность редактирования. Текст элемента в списке можно изменять вручную*  (0 — lvwAutomatic) или только из кода (1 — lvwManual).
    CheckBoxes Отображение чекбоксов. Логическое свойство. Если True, рядом с элементами отображаются чекбоксы.
    HideSelection Скрытие выделения. Логическое свойство. Если True, выделение строк будет скрыто при потере элементом управления фокуса.

    * Это касается только элементов списка, тексты подэлементов не редактируются в обоих случаях.

    Методы и события ListView

    ListView предоставляет следующие методы для построения списка:

    • ColumnHeaders.Add(Key, Text, Width): добавляет заголовок и задает ширину столбца.
    • ListItems.Add(Key, Text): добавляет новый элемент списка.
    • ListSubItems.Add(Key, Text): добавляет подэлемент к существующему элементу.
    • Clear: очищает список, необходимо использовать перед каждой перезаписью ListView .
    • AutoResizeColumn(ColumnIndex): автоматически подстраивает ширину столбца.

    Ключевые события:

    • ItemClick: срабатывает при клике на элемент.
    • ItemCheck: срабатывает при клике на чекбокс.
    • ColumnClick: срабатывает при клике на заголовок столбца, обычно используется для сортировки.
    • BeforeLabelEdit / AfterLabelEdit: срабатывает перед / после редактирования текста элемента.

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

    Добавление ListView на UserForm

    Выполните следующие шаги для добавления элемента управления ListView на пользовательскую форму:

    1. Откройте редактор VBA (Alt + F11).
    2. В редакторе VBA выберите Tools → References.
    3. Найдите и активируйте библиотеку Microsoft Windows Common Controls,  если она ещё не активирована.
    4. Создайте новую форму (Insert → UserForm).
    5. Если панели элементов управления не видно, откройте ее (View → Toolbox).
    6. Щелкните правой кнопкой мыши на панели элементов управления и выберите «Additional Controls…» (Дополнительные элементы управления…).
    7. Найдите «Microsoft ListView Control» и добавьте его на панель.
    8. Перетащите элемент ListView с панели элементов на вашу UserForm.

    Заполнение ListView в режиме отчета

    Пример использования ListView для отображения списка сотрудников с их ФИО, должностью и отделом. Добавьте следующий код в модуль UserForm:

    Результат работы кода:

    Элемент управления ListView в виде отчета

    В первом столбце идут элементы (ListItems), а в столбцах справа от элементов — подэлементы (SubItems).

    Сортировка данных в ListView-отчетах

    Добавьте в модуль формы следующую процедуру:

    Теперь при клике по заголовку любого столбца произойдет сортировка строк по данным этого столбца. При первом клике будет порядок сортировки — по убыванию, при втором — по возрастанию, при третьем — снова по убыванию и так далее.

    Небольшое пояснение:

    • ColumnHeader.SubItemIndex — номер столбца, нумерация начинается с 0;
    • ColumnHeader.Index — номер заголовка, нумерация начинается с 1.

    Добавление чекбоксов к элементам

    Добавить чекбоксы к элементам ListView очень просто. Вставьте в код инициализации формы, размещенный выше, в раздел «Настройка режима отображения» еще одну строку:

    Результат будет следующий:

    ListView с чекбоксами перед элементами

    Пример взаимодействия с чекбоксами с помощью кода VBA Excel:

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

    Вывод данных из выделенной строки

    Добавьте на форму элемент управления CommandButton1 (кнопка) и в модуль формы вставьте следующий код:

    Клик по кнопке будет выводить информацию из выбранной строки.

    Заключение

    ListView в VBA Excel — это универсальный элемент для создания интерактивных форм, превосходящий ListBox по функциональности. Он значительно расширяет возможности стандартных пользовательских форм и превращает их в полноценные интерфейсы для работы с данными.

    Об использовании элемента управления ListView в режиме значков смотрите в продолжении этой статьи.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.