End With
Пример 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 –выполняет несколько операторов для единственного объекта без повторного указания имени объекта.
Синтаксис:
Дата добавления: 2015-08-08; просмотров: 516;