End Sub
Unload Me
Next i
End If
End With
Next I
End If
Wend
End With
Next i
Wend
End If
НомерСтроки = НомерСтроки + 1
‘ 3. Транспонируем массив Преподаватели:
ReDim ПреподавателиТранс(КолСотрудников, 2)
For i = 1 To КолСотрудников
ПреподавателиТранс (i, 1) = Преподаватели (1, i)
ПреподавателиТранс (i, 2) = Преподаватели (2, i)
‘ 4. Заполняем список, состоящий из двух колонок:
With lstCотрудник
.СolumnCount = 2
.List = ПреподавателиТранс
Замечания:
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
End If
НомерСтроки = НомерСтроки + 1
‘ 2. Выделяем память для динамического массива и считываем _
в него данные:
ReDim Преподаватели(КолСотрудников, 2)
For I = 3 To НомерСтроки - 1
If Trim(Cells(НомерСтроки, 1).Value) = "АСУ" Then
КолСотрудников = КолСотрудников + 1
Преподаватели(КолСотрудников,1) = _
Cells(НомерСтроки,2).Value
Преподаватели(КолСотрудников,2) = _
Cells(НомерСтроки,3). Value
‘ 3. Заполняем список, состоящий из двух колонок:
With lstCотрудник
.СolumnCount = 2
.List = Преподаватели
2. Чтобы облегчить работу пользователя, всегда сортируйте элементы списка[16] или выстраивайте их так, как это будет ему удобно! В нашем примере первым элементом списка можно было бы прописать сотрудника с должностью Зав.кафедрой.
Определение выбранных элементов списка
Для того чтобы определить, какие элементы списка выбрал пользователь, воспользуемся свойством 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
MsgBox "Выбрано " & Сотрудников & " сотрудников!", _
vbInformation, "Сообщение"
Элемент управления Поле со списком создается кнопкой ComboBox ( Рис. 12‑15 ). Используется для создания списка и сочетает в себе функциональные возможности списка и поля ввода. В отличие от ListBox, ComboBox позволяет выбрать только один элемент.
|
|
Рис. 12‑15. Элемент управления Поле со списком
При вводе текста с клавиатуры, введенная строка не становится частью списка, но присваивается свойству Value элемента ComboBox.
Поле со списком имеет те же свойства и методы, что и Список. К ним относятся свойства ListIndex, ListCount, List и методы Clear, RemoveAtem и AddItem.
Кроме того, у этого элемента есть ряд уникальных свойств. Вот некоторые из них:
Свойства | Описание |
ListRows | Устанавливает количество элементов, отображаемых в поле со списком. |
Style | Устанавливает стиль диалога. Допустимые значения:
|
Основным событием, связанным с ComboBox, является событие Change.