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

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 Устанавливает стиль диалога. Допустимые значения:
  • fmStyleDropDownList– в поле ввода нельзя вводить текст, можно только выбрать элемент из предложенного списка;
  • fmStyleDropDownCombo– ввод текста разрешен. Этот стиль установлен по умолчанию.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: