Использование ListView в режиме значков на форме VBA Excel. Примеры заполнения ListView в режимах lvwIcon и lvwSmallIcon.
ListView в режиме значков — продолжение статьи Элемент управления ListView.
Подготовка среды VBA
Подключите библиотеку, содержащую элементы ListView и ImageList:
- Откройте редактор VBA (Alt + F11).
- В меню выберите Tools → References.
- Установите флажок на библиотеке:
Microsoft Windows Common Controls 6.0 (SP6)— именно она содержит элементы ListView и ImageList. - Сохраните, нажав «ОК».
Добавление ListView на форму
- Создайте новую форму (Insert → UserForm).
- Если панели элементов управления не видно, откройте ее (View → Toolbox).
- Щелкните правой кнопкой мыши на панели элементов управления и выберите «Additional Controls…» (Дополнительные элементы управления…).
- Найдите «Microsoft ListView Control» и «Microsoft ImageList Control», добавьте их на панель.
- Перетащите элементы ListView, ImageList и CommandButton с панели элементов на вашу UserForm.

ListView в режиме lvwSmallIcon
Запуск формы с ListView в режиме lvwSmallIcon:
.ico размером 96×96. Для конвертации файлов других форматов в .ico хорошо подходит бесплатный редактор изображений GIMP.
Шаг 2. На диске «C» создайте папку с именем «Test» и поместите в неё файлы иконок.
Шаг 3. В модуль формы вставьте следующий код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
Private Sub UserForm_Initialize() ' Настройка формы With Me .Caption = "Сообщество смурфов" .Width = 350 .Height = 250 End With ' Настройка кнопки With CommandButton1 .Caption = "Выбрать" .Width = 60 .Height = 24 .Top = Me.Height - 70 .Left = Me.Width / 3 + 20 .Font.Size = 10 End With ' Настройка ListView With ListView1 .View = lvwSmallIcon .LabelEdit = lvwManual .Sorted = True .MultiSelect = False .HideSelection = False .FullRowSelect = False .Left = Me.Left .Top = Me.Top .Width = Me.Width ' По ширине разворачиваем на всю форму .Height = Me.Height - 80 ' Внизу оставляем место для кнопок End With With ImageList1.ListImages .Add , "PapaSmurf", LoadPicture("C:\Test\PapaSmurf.ico") .Add , "Smurfette", LoadPicture("C:\Test\Smurfette.ico") .Add , "BrainySmurf", LoadPicture("C:\Test\BrainySmurf.ico") .Add , "GutsySmurf", LoadPicture("C:\Test\GutsySmurf.ico") .Add , "ClumsySmurf", LoadPicture("C:\Test\ClumsySmurf.ico") End With ' Привязка ImageList к ListView Set ListView1.SmallIcons = ImageList1 ' Добавление элементов с иконками With ListView1.ListItems .Add , , "Папа Смурф", , "PapaSmurf" .Add , , "Смурфетта", , "Smurfette" .Add , , "Смурф Знайка", , "BrainySmurf" .Add , , "Смурф Храбрец", , "GutsySmurf" .Add , , "Смурф Растяпа", , "ClumsySmurf" End With End Sub |
Запустите форму, нажав на треугольник (Run Sub/UserForm) или на клавишу F5. Вы получите следующий результат работы кода:

Для определения, какой элемент ListView1 выбран, добавьте в модуль формы процедуру для кнопки:
|
1 2 3 |
Private Sub CommandButton1_Click() MsgBox ListView1.selectedItem.Text End Sub |
Теперь при нажатии на кнопку «Выбрать», информационное окно будет выводить текст выбранного элемента.
Обратите внимание, что иконки с подписями можно перетаскивать мышью. Будьте осторожны при их перемещении, так как они могут быстро улететь в любую сторону, да так, что найти их изначальное положение будет очень трудно или даже невозможно. В результате, придется перезапускать форму.
ListView в режиме lvwIcon
Для запуска формы с ListView в режиме lvwIcon, замените в блоке «Настройка ListView» строку .View = lvwSmallIcon на строку .View = lvwIcon (было бы правильно ещё в блоке «Привязка ImageList к ListView» заменить строку Set ListView1.SmallIcons = ImageList1 на строку Set ListView1.Icons = ImageList1, но в моей версии VBA это вызывает ошибку). Результат работы кода будет таким:

Что мы здесь видим: небольшие значки с обрезанным текстом внутри, без иконок, и только в выбранном элементе текст отображается полностью. Кнопка «Выбрать» работает так же, как и в предыдущем варианте.
Заключение
Режим lvwSmallIcon элемента ListView подходит для:
- меню запуска макросов (каждый значок — отдельный инструмент);
- панели выбора отчётов;
- галереи изображений;
- навигации по категориям данных.
С помощью элемента управления ListView в режиме lvwSmallIcon можно сделать формы VBA Excel более наглядными, с удобным визуальным интерфейсом для пользователя с иконками и подписями.