Foreversoft.ru

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

Listbox vba excel свойства и методы

Listbox vba excel свойства и методы

На этом шаге мы рассмотрим назначение, основные свойства и методы этого элемента .

Элемент управления ListBox (Список) создается с помощью кнопки Список (ListBox) (рисунок 1).

Рис.1. Список в форме

Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы.

Приведем наиболее часто используемые свойства элемента управления ListBox .

Таблица 1. Основные свойства ListBox
СвойствоНазначение
ListIndexВозвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуля
ListCountВозвращает число элементов списка
TopIndexВозвращает элемент списка с наибольшим номером
ColumnCountУстанавливает число столбцов в списке
TextColumnУстанавливает столбец в списке, элемент которого возвращается свойством Text
EnabledДопустимые значения: True (запрещен выбор значения из списка пользователем) и False (в противном случае)
TextВозвращает выбранный в списке элемент
ListВозвращает элемент списка, стоящий на пересечении указанных строки и столбца. Синтаксис:

RowSourceУстанавливает диапазон, содержащий элементы списка
ControlSourceУстанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка
MultiSelectУстанавливает способ выбора элементов списка. Допустимые значения:

  • fmMultiSelectSingle (выбор только одного элемента);
  • fmMultiSelectMulti (разрешен выбор нескольких элементов посредством либо щелчка, либо нажатием клавиши Пробел );
  • fmMultiSelectExtended (разрешено использование клавиши Shift при выборе ряда последовательных элементов списка).

SelectedДопустимые значения: True (если элемент списка выбран) и False (в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMultiSelectMulti или fmMultiSelectExtended .
ColumnWidthsУстанавливает ширину столбцов списка. Синтаксис:
ColumnHeadsДопустимые значения: True (выводятся заголовки столбцов раскрывающегося списка) и False (в противном случае)
ListStyleДопустимые значения:

  • fmListStylePlain (выбранный элемент из списка выделяется цветом);
  • fmListStyleOption (перед каждым элементом в списке располагается флажок и выбор элемента из списка соответствует установке этого флажка).

MatchEntryВыводит первый подходящий элемент из списка при наборе его имени на клавиатуре. Допустимые значения:

  • fmMatchEntryNone (режим вывода подходящего элемента в списке отключен);
  • fmMatchEntryFirstLetter (вводит подходящий элемент по набранной первой букве. В этом случае, предпочтительно, чтобы элементы списка были бы упорядочены в алфавитном порядке)
  • fmMatchEntryComplete (вводит подходящий элемент по полному набранному имени).

BoundColumnУстанавливает тип, возвращаемый свойством Value . А именно,

  • если свойство BoundColumn равно 0, то свойство Value возвращает индекс выбранной строки, т.е. в этом случае оно действует как свойство ListIndex ;
  • если свойство BoundColumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойство Value возвращает элемент из выбранной строки, стоящий в столбце, определенном свойством BoundColumn .

Приведем наиболее часто используемые методы элемента управления ListBox .

Таблица 2. Основные методы ListBox
МетодНазначение
ClearУдаляет все элементы из списка
RemoveItemУдаляет из списка элемент с указанным номером. Синтаксис:

Параметр index определяет номер удаляемого из списка элемента

AddItemДобавляет элемент в список. Синтаксис:

  • item — элемент (строковое выражение), добавляемый в список;
  • varIndex — номер добавляемого элемента.

На следующем шаге мы рассмотрим особености заполнения списка .

Заполнение ListBox с использованием свойства List

Здраствуйте, уважаемые форумцы!

Можно маленький вопросик?

Надо написать макрос, кот бы производил заполнение списка пятью фамилиями, используя свойство List, и связать с кнопкой.
Вот написала:

А комп плюется, говорит, не правильно

Че не так? Спасиб заранее

Visual Basic
26.07.2006, 03:44

Заполнение listBox и comboBox в отдельном потоке с использованием событий
Всем привет! Я хочу сделать следующее: комбобокс (или несколько) должен заполняться элементами.

Отображение в listBox поля элемента из коллекции коллекций List
>

Есть карта в pictureBox-е. На ней мышкой ставяться флажки(маркеры). Нужно хранить их в БД с.

Свойства ListBox
Здравствуйте! Проблема в следующем: заполняю ListBox1 значениями из поля базы данных, вот так: .

List и listbox
Доброго времени, есть задача: Список содержит некоторые сведения о медицинском осмотре.

26.07.2006, 13:152

Это точно! Во всём виноват «неуч-компьютер»!

Отправь его в первый класс!

Visual Basic
26.07.2006, 14:083
26.07.2006, 21:13 [ТС]4
27.07.2006, 01:245
Visual Basic
27.07.2006, 01:36 [ТС]6
Visual Basic
27.07.2006, 01:487
27.07.2006, 03:42 [ТС]8
27.07.2006, 04:07 [ТС]9
28.07.2006, 19:5010
Visual Basic
29.07.2006, 05:37 [ТС]11
29.07.2006, 16:52 [ТС]12
29.07.2006, 16:52
29.07.2006, 16:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Связывание List и ListBox
Здравствуйте, подскажите пожалуйста. У меня имеется список строк, который нужно связать с.

List это Listbox ?
Привет ребята, дали задание создать прогу со списком использовать (List) а list и listbox не одно и.

Связывание List с ListBox
Добрый день, играюсь с WPF есть несколько вопросов к Гуру В code-behind достаю из базы какую-то.

Заполнение List
Всем привет, вторые сутки мучаюсь с проблемой, пишу рпг под консоль задумка была сделать инвентарь.

Класс ListBox — создание простого списка в VBA

Элемент управления ListBox vba позволяет добавлять список с данными на форму. В отличии от комбинированного списка ComboBox, ListBox имеет следующие отличия:

  • Тут нельзя вводить собственные значения, а лишь любоваться теми, что были добавлены изначально
  • Есть возможность выбирать сразу несколько значений.

Хорошо, прежде чем продолжить, вспоминаем – для запуска редактора VBA служит комбинация клавиш Alt + F11, все элементы управления находятся в окне ToolBox (меню Insert, пункт ToolBox). Вот некоторые свойства для объекта ListBox:

ColumnCount – позволяет задать количество столбиков в списке

ColumnHeads – позволяет задать режим отображения заголовков для колонок: true – заголовки отображаются, false – заголовки не отображаются. Данное свойство актуально при использовании компонента vba ListBox в Exel.

ColumnWidths – свойство определяет ширину колонок, например, “20;30;15”. Как видим, значение строковое, тут мы задали ширину для трех столбиков, если мы зададим ноль, то столбик не будет отображаться.

TextColumn – содержит целое значение, определяющее, содержимое которого столбца должно возвращать свойство Text.

BoundColumn — содержит целое значение, определяющее, содержимое которого столбца должно возвращать свойство Value.

Если для TextColumn и BoundColumn прописать 0, то будет возвращаться номер выбранного значения в списке объекта ListBox VBA языка.

Если вам надо вывести значение для заданного столбика, то надо просто прописать свойство Column задав после него в круглых скобках числовой индекс. Как все это работает, я покажу на примере дальше.

MultiSelect – позволяет определить, как происходит выбор элементов: 0 – fmMultuSelectSingle (только одиночный выбор), 1 — fmMultuSelectMulti (возможность выбирать несколько элементов щелчком мыши или посредством нажатия клавиши “Пробел”), 2 — fmMultuSelectExtended (возможность выбирать несколько элементов посредством нажатия клавиши “Shift”).

VBA Excel ListBox

Теперь надо попрактиковаться, напишем пример использования компонента VBA ListBox в Excel. Но прежде всего, надо заполнить четыре столбика различными данными. Я создал книгу в Excel и заполнил первые четыре столбика такими данными:

  1. A – первое поле Автомобиль (оно будет служить заголовком), далее следуют марки автомобилей.
  2. B – первое поле Телефон (оно будет служить заголовком), далее следуют модели телефона Samsung.
  3. C – первое поле Компьютер (оно будет служить заголовком), далее следуют марки производителей PC.
  4. D – первое поле Напиток (оно будет служить заголовком), далее следуют марки напитков.

Хорошо, таблицу в Excel мы сделали, теперь можно приступить к работе с проектом. И так, добавьте в проект новый модуль и форму.

Внешний вид формы вы можете увидеть на рисунке. На форме должны быть расположены два элемента управления vba excel ListBox, три элемента TextBox и одна кнопка (CommandButton). Первый список будет содержать четыре столбца, в которых будет отображаться содержимое первых пятидесяти ячеек для A, B, C и D. Второй список будет содержать также все 4 столбика, но отображаться будет только первый. При нажатии на кнопку, произойдет считывание выбранного элемента во втором списке, и в текстовых полях отобразится содержимое для второй, третьей и четвертой колонки.

Чтобы не путать все еще больше, приступим к практике:

UserForm_Initialize – настройка данных при инициализации формы (UserForm). Тут происходит настройка свойств для первого и второго объекта ListBox vba языка:

ListBox1 – будет отображаться заголовок, компонент содержит четыре колонки, их ширина: 60;80;60;30. Данные в список будут добавляться из диапазона A2:D50, присутствует возможность выделять только один элемент в списке.

ListBox2 – тут практически все тоже самое, что и для первого списка, только ширина колонок: 60;0;0;0 – то есть, будет отображаться содержимое только первой колонки.

CommandButton1_Click – тут происходит обработка щелчка по кнопке, а именно: происходит проверка, выбрано ли что-то во втором списке (vba excel ListBox), если да, то в первое текстовое поле запишется содержимое из второй колонки, во второе – из третей и в третье – из четвертой.

Спасибо за внимание. Автор блога Владимир Баталий

VBA Excel ListBox Multiselect

«VBA Excel ListBox Multiselect»
Привязка диапазона данных к ListBox.
Добавление, удаление пунктов списка.
Сортировка списка и множественный выбор элементов.

ListBox или «окно со списком» – это один из элементов управления, который может быть расположен на форме для предоставления пользователю возможности выбора одного или нескольких элементов (пунктов) из предоставленного множества (списка) вариантов …

    VBA предоставляет две возможности заполнения списка ListBox

  • Через свойство RowSource (источник строк) в список загружается определенный диапазон (колонка ячеек). В этом случае добавление новых пунктов в список или удаление существующих из списка в процессе выполнения макросов VBA не возможно… (по крайней мере, до момента присвоения свойству RowSource значения пустой строки).
  • Через методы AddItem и RemoteItem (добавление или удаление пунктов списка)… Повторю, что для такой возможности, свойство RowSource должно иметь пустое значение.
  • Разместить на форме несколько радиокнопок, позволяющих загружать в элемент ListBox1 списки из разных колонок листа Excel.
    Обеспечить возможность сортировки загруженных списков в ListBox1.
    Обеспечить возможность множественного выбора элементов из списка и вывод результата выбора в окно сообщений MsgBox.

    Привязка к списку диапазона значений через свойство RowSource

    Считаю, что для удобства реальной работы со списками на листах Excel (добавление новых значений в ячейки соответствующих колонок или удаление существующих) необходимо использовать функцию для автоматического определения номера последней заполненной строки в указанном столбце…
    Метод Find объектов класса Range (рекомендую заглянуть в его справку) очень помогает в этом вопросе….
    И так, функция может выглядеть, например, следующим образом….

    Function GetLastRowFromColumn(numColumn As Integer) As Integer
    GetLastRowFromColumn = Columns(numColumn).Cells.Find(«*», , , , xlByRows, xlPrevious).Row
    End Function

    Как видите, единственным параметром она получает номер колонки (правда, для простоты я оставил всего один лист в книге, а иначе бы лист тоже пришлось бы указать как параметр), а возвращает номер строки той ячейки, которую вернул метод Find…

    Тогда обработчики событий щелчков мышью по радиокнопкам будут выглядеть так…

    Private Sub OptionButton1_Click()
    lastrow = GetLastRowFromColumn(1)
    If OptionButton1 Then Me.ListBox1.RowSource = «=A1:A» & lastrow
    End Sub

    Private Sub OptionButton2_Click()
    lastrow = GetLastRowFromColumn(2)
    If OptionButton2 Then Me.ListBox1.RowSource = «=B1:B» & lastrow
    End Sub

    Private Sub OptionButton3_Click()
    lastrow = GetLastRowFromColumn(3)
    If OptionButton3 Then Me.ListBox1.RowSource = «=C1:C» & lastrow
    End Sub

    Можно было бы и еще упростить (до одной строки в процедуре),

    Me.ListBox1.RowSource = «=A1:A» & GetLastRowFromColumn(1)

    но считаю, что наличие переменной lastrow помогает просматривать ее значение при отладке, а это сэкономленное время…. которое дороже, чем уменьшение объема кода…

    В общем, первая радиокнопка помещает в список диапазон из колонки А (используя свойство RowSource), а вторая и третья, соответственно, из колонок В и С

    Множественный выбор

    Основное свойство элемента ListBox – это List… индексированный список значений… (As Variant) Поэтому к любому элементу списка можно обратиться по индексу… ,например List(idx)…
    И так же важно второе индексированное свойство Selected(idx), которое представляет собой массив логических величин, показывающий, выделен ли конкретный элемент списка пользователем или нет…

    Таким образом, обработчик кнопки «Сообщение» выглядит так…

    Private Sub CommandButton1_Click()
    Dim n As Integer, s As String
    s = «»

    For n = 0 To Me.ListBox1.ListCount — 1
    If Me.ListBox1.Selected(n) Then
    s = s & Me.ListBox1.List(n) & vbLf
    End If
    Next n

    If s = «» Then
    MsgBox «Нет выбранных пунктов», 0, «Выбранные пункты списка»
    Else
    MsgBox s, 0, «Выбранные пункты списка»
    End If

    Он формирует строку s , только из выделенных пунктов списка и выводит соответствующее сообщение… Встроенная константа vbLf означает переход на новую строку…

    Сортировка списка

    А вот для сортировки списка нам придется отказаться от свойства RowSource , т.к. изменение порядка элементов списка будет противоречить привязанному диапазону. VBA справедливо заругается…

    Вот процедура сортировки объекта ListBox (который передается в виде параметра As Object)

    Sub mySort(aL As Object)
    Dim locList() As Variant, siz As Long
    ‘Сортирует список ListBox (свойство .List — как массив Variant)
    Dim j As Long
    siz = UBound(aL.List)
    ReDim locList(UBound(aL.List))

    For j = 0 To siz
    locList(j) = .List(j)
    Next j

    .RowSource = «»
    .Clear
    mySortArray locList

    For j = 0 To siz
    .AddItem (locList(j))
    Next j

    End With
    End Sub

    Как видите, сначала создаем массив locList() нужной размерности и заполняем его элементами списка…
    Затем отвязываем список от диапазона (aL.RowSource = «») и очищаем его (aL.Clear)
    А полученный массив сортируем обычным образом (любым из алгоритмов сортировки).
    Все. Осталось загрузить отсортированный массив в список, используя метод AddItem, конечно же, в цикле…

    Для возможности множественного выбора элементов списка, не забудьте задать свойство

    ListBox1.MultiSelect = fmMultiSelectMulti



    Все…

    Читать еще:  Vb net excel
    Ссылка на основную публикацию
    Adblock
    detector