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

12.6.5. Определение выбранных элементов списка

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

Расширим нашу задачу и подсчитаем количество выбранных сотрудников. Полученную цифру выведем на экран:

Option Base 1

Private Sub cmdOK_Click()

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

For i = 0 To lstСотрудник.ListCount - 1

If lstСотрудник.Selected(i) = True Then

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

End If

Next i

MsgBox "Выбрано " & Сотрудников & " сотрудников!", _

vbInformation, "Сообщение"

Unload Me

End Sub

12.7. Поле со списком (ComboBox)

Элемент управления Поле со списком создается кнопкой ComboBox (рис. 12.15). Используется для создания списка и сочетает в себе функциональные возможности списка и поля ввода. В отличие от ListBox, ComboBox позволяет выбрать только один элемент.

Рис.12.15. Элемент управления Поле со списком

При вводе текста с клавиатуры введенная строка не становится частью списка, но присваивается свойству Value элемента ComboBox.

Поле со списком имеет те же свойства и методы, что и Список. К ним относятся свойства ListIndex, ListCount и List и методы Clear, RemoveAtem и AddItem.

Кроме того, у этого элемента есть ряд уникальных свойств. Вот некоторые из них:

Свойство

Описание

ListRows

Устанавливает количество элементов, отображаемых в поле со списком.

Style

Устанавливает стиль диалога. Допустимые значения:

  • fmStyleDropDownList – в поле ввода нельзя вводить текст, можно только выбрать элемент из предложенного списка;

  • fmStyleDropDownCombo – ввод текста разрешен. Этот стиль установлен по умолчанию.

Основным событием, связанным с ComboBox, является событие Change.

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

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

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

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

'Объявляем переменные и массивы:

Dim Кафедры() As String

Dim Кафедра As String

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

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

Dim КолКафедр As Integer

'Формируем список кафедр, которые _

встречаются в первом столбце на листе Кадры:

КолКафедр = 1 'кол-во кафедр

'Выделяем память для первой кафедры и _

заносим её в массив из ячейки (3,1):

ReDim Preserve Кафедры(1) As String

Кафедры(1) = Trim(Cells(3, 1).Value)

'Перебираем остальные записи БД, проверяя _

наличие очередной кафедры в массиве Кафедры:

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

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

Кафедра = _

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

For j = 1 To КолКафедр

If Кафедра = Кафедры(j) Then GoTo n3

Next j

КолКафедр = КолКафедр + 1

ReDim Preserve Кафедры(КолКафедр) As String

Кафедры(КолКафедр) = _

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

End If

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

Wend

Call Сортировка 'Процедура сортировки списка.

'Процедуру сортировки напишите самостоятельно.

frmКафедра.cboКафедра.List = Кафедры

frmКафедра.Show

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

Private Sub cmdOK_Click()

Dim Кафедра As String

Кафедра = cboКафедра.Value

MsgBox "Выбрана кафедра " & Кафедра & "!", _ vbInformation, "Сообщение"

Unload Me

End Sub

ЗАМЕЧАНИЕ. При инициализации формы всегда сортируйте элементы списков!

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