Top-office11.ru

IT и мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Listview vba excel

Listview vba excel

  • Откройте рабочую книгу, в которой Вы предполагаете создать пользовательскую форму
  • Перейдите в редактор VBA, для этого воспользуйтесь сочетанием клавиш ALT + F11, или в меню Сервис выберите пункт Макрос и команду Редактор Visual Basic
  • В меню Вставка/Insert выберите команду UserForm , или кликните правой кнопкой мышки и в появившемся контекстном меню выберите пункт Вставить/Insert и команду UserForm
  • Теперь, в меню Сервис/Tools выберите команду Дополнительные элементы /Additional Controls или подведите курсор мышки к панели инструментов Панель инструментов/Toolbox и кликните правой кнопкой мышки. В появившемся контекстном меню выберите команду Дополнительные элементы/ Additional Controls

    Важно : вне зависимости от выбора, Панель инструментов обязательно должна отображаться на экране, иначе Вы просто не сможете воспользоваться вышеупомянутой командой. Поэтому, если панель не видна, то в меню Вид/View выберите команду Панель элементов/Toolbox или воспользуйтесь одноимённой кнопкой с панели Стандарт/Standard

    После этого, в появившемся списке найдите и выберите следующие элементы управления и подтвердите свой выбор нажатием кнопки OK.

    Microsoft ListView Control, version .
    Microsoft ImageList Control, version .

    Важно : если на компьютере присутствует несколько различных версий, то Вам необходимо выбрать контролы одной и той же версии (т.е. если Вы решили работать с 6-й версией ListView, то и ImageList обязательно тоже должен быть 6-й версии, и наоборот), иначе возникнет ошибка (см. скриншот)

  • Кликните кнопку ListView и расположите этот элемент управления в нужном месте созданного диалогового окна.
  • При необходимости, скорректируйте месторасположение, а также высоту и ширину этого контрола. Осуществить это можно не только мышкой, но и воспользовавшись следующими свойствами Top, Left, Height, Width
  • Найдите свойство View и измените его значение на 2 — lvwList

    Комментарий : Обратите внимание на то, что допускается использование и других значений, так 0 — lvwIcon соответствует виду Крупные значки , 1 — lvwSmallIcon это Мелкие значки , а 3 — lvwReport , соответственно, Таблица , однако, это потребует некоторых изменений, за исключением мелких значков.

  • Затем, если Вы не хотите менять имена файлов вручную (как это происходит в проводнике), то установите значение свойства LabelEdit как 1 — lvwManual . Если же изменение имён файлов входит в планы, то значение свойства требуется оставить прежним, т.е. 0 — lvwAutomatic
  • Кликните небольшую кнопку, напротив свойства Font , и в появившемся окне установите нужный Шрифт , Начертание и Размер и подтвердите свой выбор нажатием кнопки Ok. Если имена файлов содержат кириллицу, то в выпадающем списке Набор символов: выберите Кириллица.

    Комментарий : Изменять значения этих свойств можно и программно, смотрите пример

    Кликните кнопку ImageList и расположите этот элемент управления в любом месте диалогового окна. Обратите внимание на то, что этот «вспомогательный» контрол, предназначенный для хранения изображений / иконок, после вывода формы на экран, не будет отображаться на ней, а стало быть, нет особой необходимости прятать его от глаз пользователя.

    Теперь, загрузите в ImageList те иконки, которые должны ассоциироваться с определённым типом файлов, для этого :

  • Кликните небольшую кнопку, напротив свойства (Специальный)/(Custom) , и в появившемся стандартном диалоговом окне выделите закладку General . После чего, выберите необходимый размер иконок, например, установите переключатель напротив 32 х 32 , если же данные габариты Вас не устраивают, то выберите Custom и введите необходимые данные в текстовые поля Height: и Width:
  • Выделите закладку Images , кликните кнопку Insert Picture и с помощью стандартного диалогового окна, выберите свою иконку для файла и нажмите кнопку Открыть

    Читать еще:  Как сделать объединение ячеек в excel

    Совет : если в выпадающем списке Тип файлов: по умолчанию, установлен Bitmap and Icon Files (*.bmp, *.ico) и найти интересные иконки не получается, то выберите All Files (*.*) и повторите поиск, только учтите, что картинки, содержащие изображение «Бородинской панорамы» лучше не использовать.

    Добавьте иконку для каждого из типов файлов, которые будут отображаться, на нашей форме, плюс ещё одна иконка, на тот случай, если в папке будет обнаружен файл с расширением, отличным от нижеперечисленных. В итоге, должно получиться 11 иконок.

    Тип файлаРасширение
    Лист Microsoft Excel.xls
    Шаблон.xlt
    Надстройка.xla
    Надстройка XLL.xll
    Рабочая область.xlw
    Макрос Microsoft Excel 4.0.xlm
    Microsoft Excel 5.0 DialogSheet.xld
    Диаграмма.xlc
    Модуль VBA.xlv
    Файл архива.xlk

    Комментарий : Разумеется, Вы вправе организовать перебор других типов файлов, или же искать только XLS файлы, в последнем случае, кстати, пример намного упрощается (смотрите вариант #3)

    Вариант только для файлов с расширением .XLS

    Пример можно скачать здесь

    Если же необходимо создать полноценную имитацию стандартного диалогового окна, где вместе с именами файлов, будут также отображаться и их иконки (причём, в отличии от первоначального варианта, эти иконки мы не можем предварительно загрузить в ImageList1, по причине их отсутствия), то в таком случае, нам придётся использовать функции WinAPI.

    Обратите внимание на то, что перед выполнение нижеопубликованного кода, одну иконку всё же необходимо загрузить в ImageList1, установив необходимые размеры. Это сделано для того, чтобы не связывать ListView1 и ImageList1 в цикле , где перебираются файлы указанной папки.

    ListView с редактируемыми ячейками

    Данный пост написан по мотивам статьи с codeproject “ListView in-line editing”.

    Суть вопроса в том, что иногда возникает необходимость править данные в ячейках элемента ListView, который настроен на табличное представление (свойство View выставлено в Details). Как вы знаете напрямую это сделать нельзя, потому что ячейки эти реализованы как Read Only.

    Исходный код доступен на GitHub.

    В этом случае нам поможет TextBox. Как использовать данную методику я покажу на примере. В нашем распоряжении будет таблица с двумя столбцами Address и Value. При этом редактируемой может быть только ячейка в столбце Value. Таблица реализована при помощи элемента ListView и называется lvTable.

    Идея подхода следующая: на форму мы поместим TextBox элемент (tbCell), он будет подставляться на место ячейки, данные который мы ходим изменить. Изменение осуществляется двойным щелчком левой кнопки мыши по соответствующей ячейке, после этого информация из нее будет скопирована в tbCell, доступный для редактирования. Для сохранения данных нужно нажать Enter или убрать фокус с элемента.

    Далее предлагаю описание реализации в виде последовательности действий. Исходный код проекта прилагается к статье.

    Шаг 1

    На форме располагаем все необходимые элементы: ListView, TextBox, и настраиваем их.

    СвойствоЗначение
    BorderStyleNone
    FullRowSelectTrue
    NamelvTable
    DockFill
    ViewDetails

    Добавим два столбца (Address и Value) на ListView, для этого нужно щелкнуть по значению свойства Columns и в появившемся окне сделать необходимые правки.

    СвойствоЗначение
    NametbCell
    DockFill

    Форма будет выглядеть примерно так, как показано ниже.

    Шаг 2

    Добавим загрузку демо данных на форму, для этого создадим обработчик события Load для формы и назовем его Form1_Load. После этого добавим в него код, заполняющий таблицу данными.

    Добавим обработчики событий для наших элементов.

    СобытиеЗначение
    MouseDoubleClicklvTable_MouseDoubleClick
    СобытиеЗначение
    LeavetbCell_Leave
    KeyPresstbCell_KeyPress

    Шаг 3

    Добавим в обработчики событий код, который позволяет “редактировать” ячейки таблицы.

    Создадим три глобальных переменных.

    CancelEdit – переменная, являющаяся флагом, через который передается разрешение на изменение данных ячейки.

    CurrentItem – текущая запись таблицы.

    CurrentSubItem – поле редактируемой записи.

    Заполним кодом обработчики событий.

    В своем проекте, на этом этапе, вам будет необходимо внести в обработчики событий свои коррективы: проверка вводимых данных и т.п.
    На этом все, спасибо!

    Listview vba excel

    Элемент управления ListView отображает данные как объекты ListItem. Каждый объект ListItem может связать необязательный значок с меткой объекта. Элемент управления превосходит другие при представлении подмножеств данных (типа членов базы данных) или обособленных объектов (типа шаблонов документа).

    Возможное применение
    • Отображение результатов запроса базы данных.
    • Отображение всех отчетов в таблице базы данных.
    • В тандеме с элементом управления Treeview дать пользователю расширенное представление ноуда элемента управления TreeView.
    Четыре различных доступных режима просмотра

    Элемент управления ListView может отображать данные в четырех различных режимах просмотра (как показано на рис. 2.7-2.10). Программирование элемента управления может зависеть от того, какой из режимов просмотра вы предлагаете пользователю.

    Каждый из этих режимов имеет свои преимущества. Некоторые из них перечислены в следующей таблице:

    Значки. Может управляться мышью, позволяя пользователю перетащить и опустить объект и перестраивать объекты.

    Мелкие значки. Позволяет увидеть больше объектов ListItem. Как и в режиме Icon, объекты могут быть перестроены пользователем.

    Список. Представляет сортируемый список объектов ListItem.

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

    Рис. 7A.7 ListView в режиме Icon

    Рис. 7A.8 ListView в режиме SmallIcon

    Рис. 7A.9 ListView в режиме List

    Рис. 7A.10 ListView в режиме Report

    Изменение режима просмотра свойством View

    Чтобы изменить режим визуального отображения, используйте свойство View. Следующий код устанавливает свойство View в режим Report (3), используя встроенную константу lvwReport:

    ‘ Имя элемента управления — «ListView1»
    ListView1.View = lvwReport

    Используя свойство View, можно разрешить пользователю динамически изменять вид. В событии формы Load заполняется ComboBox с вариантами выбора отображения:

    Private Sub Form_Load()
    ‘ Заполнение элемента управления ComboBox.
    ‘ Имя элемента управления ComboBox — «cmbChooseView».
    With cmbChooseView
    .AddItem «Значки» ‘ 0
    .AddItem «Мелкие значки» ‘ 1
    .AddItem «Список» ‘ 2
    .AddItem «Таблица» ‘ 3
    End With
    End Sub

    В событии Click элемента управления ComboBox настройка вида элемента управления может быть сброшена:

    Private Sub cmbChooseView_Click()
    ‘ Имя элемента управления ListView — «lvwDB».
    lvwDB.View = cmbChooseView.ListIndex
    End Sub

    Два элемента управления ImageList для Icons и SmallIcons

    Объект ListItem состоит из подписи (свойство Text) и необязательного изображения, которое снабжается элементом управления ImageList. Однако элемент управления ListView, в отличие от других элементов управления, может использовать два элемента управления ImageList, которые можно установить для использования свойств Icons и SmallIcons. Сколько использовать элементов управления ImageList — один или оба, зависит от выбранного режима визуального отображения, определенного свойством View.

    В режимах List, SmallIcon и Report можно использовать для представления объекта ListItem маленький значок. Один элемент управления ImageList (указанный свойством SmallIcons) поставит изображения для использования в любом из этих трех режимов. Во время разработки или выполнения установите свойство SmallIcons на элемент управления ImageList, и он снабдит ListView этими изображениями. Во время разработки, чтобы установить ImageList для SmallIcons, используйте окно диалога страниц свойств элемента управления ListView. Во время выполнения используйте следующий код:

    Напротив, когда элемент управления находится в режиме Icon, элемент управления использует другой набор изображений, снабженных вторым элементом управления ImageList. Установите свойство Icons на этот второй ImageList во время разработки, используя окно диалога страниц свойств, или напишите следующий код для установки во время выполнения:

    Примечание Размер значков, которые вы используете, определен элементом управления ImageList. Доступны размеры 16×16, 32×32, 48×48, и Custom (заказные).

    Если вы планируете использовать больше одного режима отображения и хотите отобразить значки, установите свойства SmallIcon и Icon для каждого объекта ListItem. Следующий код сначала объявляет объектную переменную типа ListItem, затем устанавливает объектную переменную на единственный объект ListItem, добавленный в коллекцию методом Add. Тогда изображения SmallIcon и Icon устанавливаются ссылкой на объектную переменную:

    Dim itmX As ListItem
    Set itmX = ListView1.ListItems.Add()
    ‘ Предположим, что изображение с именем «smallBook» существует
    ‘ в ImageList, на который установлено свойство SmallIcons.
    itmX.SmallIcon = «smallBook»
    ‘ Предположим, что изображение с именем «BigBook» существует
    ‘ в ImageList, на который установлено свойство Icons.
    itmX.Icon = «BigBook»

    После установки изображения свойствами SmallIcon и Icon правильное изображение будет автоматически отображаться при переключении видов, используя свойство View.

    Отображение ColumnHeaders в режиме Report

    Специфическая особенность режима Report — объекты ColumnHeader. Объекты ColumnHeader элемент управления ListView содержит в коллекции ColumnHeaders. ColumnHeader показан на рис. 7A.11:

    Рис. 7A.11 ColumnHeader

    Объект ColumnHeader имеет свойство Text, которое отображает текст, когда элемент управления находится в реджиме Report. Еще можно установить свойство Width каждой колонки ColumnHeader, а также свойство Alignment (которое устанавливает выравнивание текста, отображенного в ColumnHeader). Следующий пример кода создает четыре объекта ColumnHeader и устанавливает их свойства Text и Width:

    Dim colX As ColumnHeader ‘ Объявление переменной.
    Dim intX As Integer ‘ Переменная счетчика.
    For intX = 1 To 4
    Set colX = ListView1.ColumnHeaders.Add()
    colX.Text = «Field » & intX
    colX.W > Next intX

    Настройка текста колонки свойством SubItems

    Обратите внимание, что в любом из видов, кроме Report, объект ListItem отображает только одну подпись — свойство Text. Но в режиме Report каждый объект ListItem может иметь несколько других текстовых пунктов. Например, в рис. 2.11 «Путешествие автостопом по Visual Basic. » имеет подпункты «автор» («Вон, Уильям Р.»), «год» (1996) и «номер ISBN», связанные с ним. Каждый из этих текстовых пунктов — свойства объекта ListItem, определенные его свойством SubItems. Далее, поскольку может иметься любое число этих текстовых пунктов, свойство SubItems — это, фактически, массив строк. Таким образом, чтобы установить автора, год и номер ISBN объекта ListItem, код мог бы выглядеть следующим образом:

    ‘ Имя элемента управления — lvwAuthors.
    lvwAuthor.ListItems(23).Text = _
    «Hitchhiker’s Guide to Visual Basic and SQL Server»
    lvwAuthor.ListItems(23).SubItems(1)= _
    «Vaughn, William R.»
    lvwAuthor.ListItems(23).SubItems(2)= «1996»
    lvwAuthor.ListItems(23).SubItems(3)= » 1-55615-906-4″

    Подпункты зависят от наличия ColumnHeaders

    И наличие, и количество подпунктов зависят от наличия и количества объектов ColumnHeader. То есть нельзя установить какие-либо подпункты, если нет никаких объектов ColumnHeader. Далее, количество объектов ColumnHeader определяет число подпунктов, которые можно установить для объекта ListItem. И количество подпунктов всегда на один меньше, чем количество объектов ColumnHeader. Это происходит потому, что первый объект ColumnHeader всегда связан со свойством Text объекта ListItem, как показано на рис. 7A.12:

    Рис. 7A.12 Первый ColumnHeader и подпункты

    Таким образом, если число объектов ColumnHeader в вышеупомянутом примере — 4, то максимальный возможное число подпунктов, которые можно установить — 3.

  • Ссылка на основную публикацию
    Adblock
    detector