Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_lektsii.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
3.91 Mб
Скачать

12.6.2. Методы ListBox

Метод

Описание

Clear

Удаляет все элементы списка

RemoveItem

Удаляет элемент с указанным номером из списка.

Синтаксис:

RemoveItem(Index)

AddItem

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

Синтаксис:

AddItem([Item [, varIndex]])

Item – элемент (строковое выражение), добавляемый в список

varIndex – номер добавляемого элемента

12.6.3. Заполнение списка

Заполнить список можно одним из следующих способов:

  • поэлементно (список состоит из одной колонки):

With lstМесяцы

.AddItem "Январь"

.AddItem "Февраль"

.AddItem "Март"

End With

  • массивом (список состоит из одной колонки):

lstМесяцы.List = Array ("Январь", _

"Февраль",…,"Декабрь")

или

Dim Месяцы(12) As String

Месяцы(1) = "Январь"

Месяцы(2) = "Февраль"

Месяцы(12) = "Декабрь"

lstМесяцы.List = Месяцы

  • поэлементно (список состоит из нескольких колонок, например, двух):

With lstСтудент

.СolumnCount = 2

.AddItem "Иванов"

.List(0,1) = "Алексей"

.AddItem "Петров"

.List(1,1) = "Борис"

.AddItem "Смирнов"

.List(2,1) = "Борис"

End With

  • массивом (список состоит из нескольких колонок, например, двух):

ReDim Преподаватели(КолСотрудников, 2)

For i = 3 To КолСотрудников

Преподаватели(КолСотрудников, 1) = _

Cells(НомерСтроки,2).Value

Преподаватели(КолСотрудников, 2) = _

Cells(НомерСтроки,3).Value

Next i

lstСотрудники.List = Преподаватели

12.6.4. Пример создания списка

Предположим, что нам надо создать следующую форму с перечнем сотрудников кафедры:

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

  • список сотрудников должен быть разбит на 2 колонки (1-я колонка – Ф.И.О, 2-я – должность);

  • предусмотрена возможность выбора нескольких элементов;

  • данные, на основе которых формируется этот список, находятся на рабочем листе Кадры в книге C:\St\Институт.xls (рис. 12.14).

Рис. 12.14. Структура базы данных Кадры

Тогда фрагмент кода, который формирует список, запишется так:

' 1. Массив Преподаватели объявляем как _

динамический массив

Dim Преподаватели() As String

Dim ПреподавателиТранс() As String

Dim НомерСтроки As Integer

Dim КолСотрудников As Integer

. . . .

НомерСтроки = 3

КолСотрудников = 0

' 2. Считываем данные в динамический массив:

While Trim(Cells(НомерСтроки,2).Value) <> ""

If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then

КолСотрудников = КолСотрудников + 1

ReDim Preserve Преподаватели(2, КолСотрудников)

Преподаватели(1,КолСотрудников) = _

Cells(НомерСтроки,2).Value

Преподаватели(2,КолСотрудников) = _

Cells(НомерСтроки,3).Value

End If

НомерСтроки = НомерСтроки + 1

Wend

' 3. Транспонируем массив Преподаватели:

ReDim ПреподавателиТранс(КолСотрудников, 2)

For i = 1 To КолСотрудников

ПреподавателиТранс (i, 1) = Преподаватели (1, i)

ПреподавателиТранс (i, 2) = Преподаватели (2, i)

Next i

' 4. Заполняем список, состоящий из двух колонок:

With lstCотрудник

.СolumnCount = 2

.List = ПреподавателиТранс

End With

ЗАМЕЧАНИЯ:

1. Если Вы формируете список из массива (как в приведенном примере), то количество его элементов задает первый индекс массива. Соответственно в первую колонку списка будут считываться данные из 1-й «колонки» массива (во вторую – из второй и т.д.). Поэтому нам пришлось транспонировать массив Преподаватели в массив ПреподавателиТранс. Можно обойтись одним массивом и тогда этот же фрагмент кода запишется так:

Dim Преподаватели() As String

Dim НомерСтроки As Integer

Dim КолСотрудников As Integer

. . . .

НомерСтроки = 3

КолСотрудников = 0

'1. Определяем количество записей в конечном _

массиве:

While Trim(Cells(НомерСтроки,2).Value) <> ""

If Trim(Cells(НомерСтроки, 1).Value) = _

"АСУ" Then КолСотрудников = _

КолСотрудников + 1

НомерСтроки = НомерСтроки + 1

Wend

'2. Выделяем память для динамического массива и _

считываем в него данные:

ReDim Преподаватели(КолСотрудников, 2)

For i = 3 To НомерСтроки - 1

If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then

КолСотрудников = КолСотрудников + 1

Преподаватели(КолСотрудников,1) = _

Cells(НомерСтроки,2).Value

Преподаватели(КолСотрудников,2) = _

Cells(НомерСтроки,3). Value

End If

Next i

'3. Заполняем список, состоящий из двух колонок:

With lstCотрудник

.СolumnCount = 2

.List = Преподаватели

End With

2. Чтобы облегчить работу пользователя, всегда сортируйте элементы списка1 или выстраивайте их так, как это будет ему удобно! В нашем примере первым элементом списка можно было бы прописать сотрудника с должностью Зав.кафедрой.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]