End With
With ListBox1
Dim A(2, 1) As String
End With
With ListBox1
End With
With ListBox1
Dim a(1 To 2) As Integer
B)
End With
With ListBox1
End With
With ListBox1
.AddItem "Июнь"
.AddItem "Июль"
.AddItem "Август"
2 Массивом, если список состоит из одной колонки
a)
.List = Array("Июнь", "Июль", "Август")
a(1) = 1: a(2) = 2
ListBox1.List = a
3 Из диапазона, в который предварительно введены элементы списка. Результат выбора (индекс выбранной строки) выводится в ячейку С1:
.ColumnCount=2
.RowSource=" A1:B4"
. ControlSource="C1"
4 Поэлементно, если список состоит из нескольких колонок, например двух:
.ColumnCount =2
.AddItem “Июнь”
.List(0,1)= “Сессия”
.AddItem “Июль”
.List(1,1)= “Каникулы”
.AddItem “Август”
.List(2,1)= “Каникулы”
5 Массивом если список состоит из нескольких колонок, например двух:
А(0, 0) = "Июнь” : А(0, 1) = “Сессия”
А(1, 0) = "Июль” : А(1, 1) = “Каникулы”
А(2, 0) = " Август ” : А(2, 1) = “Каникулы”
.ColumnCount =2
.List=A
Пример 1 (ListBox). Создадим приложение, которое позволит подсчитать сумму или произведение выбранных в списке чисел.
Перейдем в VBA и, выполнив команду Insert (Вставка) ® UserForm, добавим в проект форму. Расположим на форме следующие элементы управления
Рисунок 16 – Проектируемая пользовательская форма
Frame1 (рамка) используется для визуальной группировки элементов. Свойство Caption – отображает надпись рамки.
OptionButton (переключатель) – позволяет выбрать один из нескольких взаимоисключающих параметров. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта. Свойство Caption – отображает надпись рядом с переключателем. Свойство Value возвращает True, если переключатель выбран, и False в противном случае.
Таблица 22
Элемент управления | Предназначение |
CommandButton1 (кнопка) | Нажатие на кнопку запускает процедуру обработки события (Private Sub CommandButton1_Click()), которая определяет, какой переключатель выбран. В зависимости от выбранного переключателя производится действие над выбранными в списке числами. Найденное значение выводится в поле TextBox1. |
CommandButton2 (кнопка) | Нажатие на кнопку запускает процедуру обработки события (Private Sub CommandButton2_Click()), которая закрывает диалоговое окно |
TextBox1 (поле) | В это поле будет выводиться результат. Поле сделаем недоступным для пользователя, т.е. пользователь не сможет ни ввести, ни скорректировать данные в этом поле |
Label1 (надпись) | Пояснительная надпись для поля вывода |
Frame1 (рамка) | Используется для группировки переключателей |
OptionButton1(переключатель) OptionButton2(переключатель) | Выбор переключателя указывает, какая операция будет выполняться над выбранными числами |
Форма создана, осталось только в модуле формы набрать код.
Private Sub CommandButton1_Click() Dim i As Integer Dim n As Integer Dim Сумма As Double Dim Произведение As Double Dim Результат As Double If OptionButton1.Value = True Then Сумма = 0 With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Сумма = Сумма + .List(i) End If Next i End With Результат = Сумма End If If OptionButton2.Value = True Then Произведение = 1 With UserForm1.ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Произведение = Произведение * .List(i) End If Next i End With Результат = Произведение End If TextBox1.Text = CStr(Результат) End Sub | При выборе первого переключателя вычисляется сумма выбранных элементов При выборе второго переключателя вычисляется произведение выбранных элементов Результат выводится в поле TextBox1 |
Private Sub CommandButton2_Click() UserForm1.Hide End Sub | Процедура закрытия диалогового окна |
Private Sub UserForm_Initialize() With ListBox1 .List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .ListIndex = 0 .MultiSelect = fmMultiSelectMulti End With With UserForm1.OptionButton1 .Value = True .Caption = "Сумма" .ControlTipText = "Сумма выбранных элементов" End With OptionButton2.ControlTipText= "Произведение выбранных элементов" CommandButton2.ControlTipText = "Выход из программы" CommandButton1.ControlTipText = "Нахождение результата" UserForm1.Caption = "Операции над элементами списка" OptionButton2.Caption = "Произведение" Label1.Caption = "Результат" CommandButton1.Caption = "Вычислить" CommandButton2.Caption = "Отмена" Frame1.Caption = "Операция" TextBox1.Enabled = False End Sub | Процедура инициализации диалогового окна Заполнение списка Установка режима выбора При загрузке формы первоначально будет выбран переключатель «Сумма» Задание текста всплывающих подсказок у элементов управления Задание заголовка пользовательской формы Инструкции задают видимые надписи для объектов Инструкция делает TextBox1 недоступным для пользователя |
После конструирования формы и написания кода в модуле формы, выберем команду Run,и на экране появится форма, представленная на рисунке 17
Рисунок 17 – Спроектированная форма
Private Sub CommandButton1_Click()
Dim i As Integer
Dim n As Integer
Dim Сумма As Double
Dim Произведение As Double
Dim Результат As Double
If OptionButton1.Value = True Then
Сумма = 0
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Сумма = Сумма + .List(i)
End If
Next i
End With
Результат = Сумма
End If
If OptionButton2.Value = True Then
Произведение = 1
With UserForm3.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Произведение = Произведение * .List(i)
End If
Next i
End With
Результат = Произведение
End If
TextBox1.Text = CStr(Результат)
End Sub
Private Sub CommandButton2_Click()
UserForm3.Hide
ListBox1.Clear
End Sub
Private Sub ListBox1_Change()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.ListIndex = 0
.MultiSelect = fmMultiSelectMulti
End With
With UserForm3.OptionButton1
.Value = True
.Caption = "Сумма"
.ControlTipText = "Сумма выбранных элементов"
End With
OptionButton2.Caption = "Произведение"
OptionButton2.ControlTipText = "Произведение выбранных элементов"
CommandButton1.Caption = "Вычислить"
CommandButton1.ControlTipText = "Нахождение результата"
CommandButton2.Caption = "Отмена"
CommandButton2.ControlTipText = "Выход из программы"
UserForm1.Caption = "Операции над элементами списка"
Label1.Caption = "Результат"
Frame1.Caption = "Операция"
TextBox1.Enabled = False
End Sub
Оператор With –выполняет несколько операторов для единственного объекта без повторного указания имени объекта.
Синтаксис: