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

1. Заполнение объектов ListBox, расположенных на одном объекте UserForm.

Создание пользовательской формы c объектами ListBox организуется следующим образом:

  1. Войти в VBAAlt-F11;

  2. Выбрать Insert (вставка);

  3. Выбрать UserForm.

Затем на появившуюся “платформу” объекта UserForm с панели Toolbox последовательно переместить:

  • пять объектов ListBox;

  • один объект TextBox;

  • два объекта CommandButton,

расположив их, как показано на рис. 1.1.

Далее войти в VBA (Alt-F11), выбрать объект UserForm.

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

Для реализации заполнения объекта ListBox3 способом “Из диапазона” необходимо предварительно ввести элементы списка в выбранный диапазон, например A1:B6, рис. 1.1.

Рис. 1.1.

Рис. 1.2.

Рис. 1.3.

Программа Заполнение объектов ListBox, расположенных на одном объекте UserForm.

Private Sub CommandButton1_Click()

Dim s(1 To 5,1 To 3)As String

Dim i As Integer

Dim j As Integer

' Заполнение списка поэлементно, если список состоит из одной колонки

With ListBox1

.AddItem “Июнь

.AddItem “Июль

.AddItem ”Август

.AddItem “Сентябрь

End With

' Заполнение списка массивом, если список состоит из одной колонки.

With ListBox2

.List=Array(''Июнь'', ''Июль'', ''Август'', ''Сентябрь'', ''Октябрь'')

.ListIndex=1

TextBox1=.ListIndex

.ControlSource=''A7''

End With

' Заполнение списка из диапазона, в который предварительно введены элементы списка.

With ListBox3

. ColumnCount=2

.RowSource=''A1:B5''

.ControlSourse=''A8''

.BoundColumn=0

.BoundColumn=1

.BoundColumn=2

TextBox2=.BoundColumn

End With

' Заполнение списка поэлементно, если список состоит из нескольких колонок.

With ListBox5

.ColumnCount=3

.AddItem ''Июнь''

.List(0,1)=''06''

.List(0,2)=''30''

.AddItem ''Июль''

.List(1,1)=''07''

.List(1,2)=''31''

.AddItem ''Август''

.List(2,1)=''08''

.List(2,2)=''31''

.AddItem ''Сентябрь''

.List(3,1)=''09''

.List(3,2)=''30''

End With

' Заполнение списка массивом, несколько колонок

S(1, 1) ="№": S(1, 2) = "ФИО": S(1, 3) = "Оценка"

S(2, 1) = "1" : S(2, 2) = "Петров": S(2, 3) = "3"

S(3, 1) = "2" : S(3, 2) = "Шацков": S(3, 3) = "5"

S(4, 1) = "3" : S(4, 2) = "Фролькис": S(4, 3) = "2"

S(5, 1) = "4" : S(5, 2) = "Печкин": S(5, 3) = "4"

With ListBox5

.ColumnCount = 3

.List = S

End With

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Некоторые комментарии к программе:

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, при реализации способа поэлементного заполнения списка ListBox1, к объекту ListBox1 применяется метод AddItem, с помощью которого в операторе цикла With добавляются элементы списка, например .AddItem "Июнь" и т.д.;

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, при реализации способа заполнения списка ListBox2 массивом, если список состоит из одной колонки, к объекту ListBox2 применяется свойство .List, в качестве значения которого объекту ListBox2 передается одномерный массив символьных констант "Июнь", "Июль" и т.д.;

– Кроме того, для списка ListBox2 применяется свойство .ControlSource, с помощью которого устанавливается ячейка (в данном случае это “A7”), в которую возвращается выбранный элемент списка ListBox2, так как на рис. 1.1 в списке ListBox2 была выбрана вторая строка, второй элемент списка "Июль", то поэтому этот элемент и отобразился в ячейке A7;

– В операторе цикла With объекта ListBox2 для объекта TextBox1 применяется свойство .ListIndex, которое возвращает номер текущего, то есть выбранного, элемента списка. Так как первоначально после вызова объекта UserForm объекты ListBox1- ListBox5 не заполнены и, следовательно, в объекте ListBox2 никакой элемент списка не выбран, то после нажатия кнопки “Заполнить”, в окне объекта TextBox1, рис. 1.1, появляется значение “-1”. После выбора в объекте ListBox2 элемента списка "Июль", и повторного нажатия кнопки “Заполнить”, в окне объекта TextBox1, рис. 1.1, появляется значение “1”, а не “2”, так как нумерация элементов списка начинается с нуля;

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, при реализации способа заполнения списка ListBox3 из диапазона, к объекту ListBox3 применяется свойство RowSours, с помощью которого устанавливается диапазон, содержащий элементы списка, в данном случае "A1:B6";

– Так как данные, передаваемые из указанного диапазона, в объект ListBox3 представляют собой таблицу, состоящую из двух столбцов, то, к объекту ListBox3 применяется свойство .ColumnCount, значение которого устанавливает число столбцов в списке = 2;

– Кроме того, для списка ListBox3 применяется свойство .ControlSource, с помощью которого устанавливается ячейка (в данном случае это “A8”), в которую возвращается выбранный элемент списка ListBox3, так как на рис. 1.1 в списке ListBox3 была выбрана пятая строка списка ListBox3, элементом которого является "5", то поэтому этот элемент и отобразился в ячейке A8;

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, при реализации способа заполнения списка ListBox4 поэлементно, если список состоит из нескольких колонок, к объекту ListBox4 применяется метод AddItem, с помощью которого в операторе цикла With добавляются элементы списка, например .AddItem "Июнь" и т.д.; Кроме того, к объекту ListBox4 применяется свойство .List, в качестве значений которого элементам списка ListBox4, находящимся на пересечении указанных строк и столбцов, сообщаются соответствующие символьные константы, например, "0.6", "30" и т.д.;

– Так как данные, формируемые в объекте ListBox4 представляют собой таблицу, состоящую из трех столбцов, то, к объекту ListBox4 применяется свойство .ColumnCount, значение которого устанавливает число столбцов в списке = 3;

– В модуле Private Sub CommandButton1_Click(), программно поддерживающем объект CommandButton1, при реализации способа заполнения списка ListBox5 массивом, если список состоит из нескольких колонок, сначала объявляется двумерный массив S, а затем с помощью операторов присваивания выполняется заполнение элементов массива. После чего к объекту ListBox5 применяется свойство .List, в качестве значения которого объекту ListBox5 передается двумерный массив символьных констант "№","ФИО,"Оценка"и т.д. Кроме того, к объекту ListBox5 применяется свойство .ColumnCount, значение которого устанавливает число столбцов в списке = 3;

– Модуль объекта CommandButton2, который в свойстве Caption переименован в “Выход”, обеспечивает завершение функционирования объекта UserForm.