1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 43, где для изображения:
ü чисел используется элемент Список (ListBox);
ü Вычислить, Отмена – элемент Кнопка (CommandButton);
ü Операция – элемент Рамка (Frame);
ü Сумма, Произведение, Среднее - элемент Переключатель (OptionButton);
ü Результат - элемент Надпись (Label );
ü для отображения вычисляемого значения – элемент TextBox (Текстовое поле).
2. На кнопку «Вычислить» введите следующую программу:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim n As Integer
Dim Сумма As Double
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 ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
Произведение = Произведение * .List(i)
End If
Next i
End With
Результат = Произведение
End If
If OptionButton3.Value = True Then
Среднее = 0
n = 0
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
n = n + 1
Среднее = Среднее + .List(i)
End If
Next i
End With
Результат = Среднее / n
End If
TextBox1.Text = CStr(Format(Результат, "Fixed"))
End Sub
3. Для кнопки «Отмена» напишите следующую процедуру:
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
4. Для инициализации формы введите следующую процедуру:
Private Sub UserForm_Initialize()
With ListBox1
.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 10)
.ListIndex = 0
.MultiSelect = fmMultiSelectMulti
End With
TextBox1.Enabled = False
End Sub
5. Запустите проект на выполнение. При этом в группе Операция следует установить один из переключателей: Сумма, Произведение или Среднее, чтобы указать, какая операция будет выполняться над выбранными числами. Нажатие кнопки «Вычислить» должно привести к выполнению операции и выводу результата в поле Результат.
Упражнение 4. Разработка приложения, которое будет содержать пользовательскую форму для ввода названия организации и выбора её типа и вывода данных на рабочий лист, показанную на рисунке 44.
Рисунок 44. Пользовательская форма
1. Откройте рабочую книгу и нажмите комбинацию клавиш <Alt+F11> для запуска VBA;
3. Свойства Caption объекта UserForm будет иметь значение по умолчанию – UserForm1. Воспользуйтесь окном Свойств (Properties) для того, чтобы изменить значение свойства Caption на “Вывод названия организации” (если окно Свойств (Properties) не отображается на экране, нажмите клавишу <F4>);
4. Создайте форму пользователя и разместите на ней элементы управления, как показано на рис. 6.4;
Дважды щелкните по кнопке «Отмена» и введите следующую процедуру:
Private Sub CommandButton1_Click()‘начало процедуры
Unload UserForm1 ‘закрытие формы
End Sub ‘конец процедуры
5. Данная процедура выполняется после щелчка пользователем по кнопке «Отмена». Она вызывает выгрузку формы UserForm из памяти;
6. Нажмите комбинацию клавиш <Shift+F7>, чтобы повторно отобразить объект UserForm1;
7. Дважды щелкните по кнопке «Ok» и введите следующую процедуру:
Private Sub CommandButton1_Click() ‘начало процедуры
Sheets("Лист1").Activate ‘активизация рабочего листа
(связь с рабочим листом)
NextRow = _
Application.WorksheetFunction.CountA(Range("A:A")) + 1 ‘определение пустой строки в рабочем листе, здесь Count (функция СЧЕТ), Range("A:A")) + 1 - выделяет диапазон ячеек, начиная с ячейки А1 с шагом +1
Cells(NextRow, 1) = TextBox1.Text ‘передача имени
If OptionButton1 Then Cells(NextRow, 2) = "Фирма"
If OptionButton2 Then Cells(NextRow, 2) = "Корпорация"
If OptionButton3 Then Cells(NextRow, 2) = "Частное предприятие"
‘проверка условия
TextBox1.Text = "" 'Очистка элементов управления для следующих записей
OptionUnknown = True
TextBox1.SetFocus
If TextBox1.Text = "" Then
MsgBox "Введите название организации."
TextBox1.SetFocus
Exit Sub
End If 'Проверка введения имени
End Sub
8. Перейдите на рабочий лист MS Excel и поместите элемент управления Кнопка панели элементов Visual Basic , после чего появиться диалоговое окно «Назначить макрос объекту», выберите вкладку «Создать». В окне модуля введите код:
Sub Кнопка1_Щелкнуть()‘начало процедуры
UserForm1.Show‘открытие формы
End Sub ‘конец процедуры
Поместите на ней надпись «Нажать» (рис. 45). С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно, показанное на рисунке 44.
Рисунок 45. Законченный вид рабочего листа
9. Запустите проект и поверьте его на выполнение.
Упражнение 5. Разработка сложного приложения, которое создает базу данных для регистрации вкладов.
1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 46.
Рисунок 46. Форма диалогового окна для программы регистрации вкладов
2. Элементам управления присвойте имена и свойства в соответствии таблицей 6.1.
Таблица 6.1
Элемент
Имя
Свойства
События
Форма
UserForm
1.Initialize
2.Устанавливает количество элементов в списке.
3.Присваивает значения элементам списка.
Форма
Вклад
Caption
Прием вклада
4.Изменяет текст в строке заголовка приложения.
5.Закрывает сроку формул.
6.Устанавливает всплывающие подсказки.
7.Формирует заголовки столбцов таблицы, обращаясь к специально созданной процедуре.
Кнопка
Принять
Caption
Принять
Click
Вычисляет номер первой свободной строки.
1.Поверяет, введены ли данные в поля формы.
2.Записывает данные из элементов управления Формы в ячейки рабочего листа
Кнопка
Отмена
Caption
Отмена
Click
1.Вычисляет номер последней строки таблицы.
2. Удаляет содержимое из ячеек этой строки.
Кнопка
Выход
Caption
Выход
Click
Завершает выполнение программы
Поле
Фамилия
Поле
Сумма
вклада
Поле со списком
Тип
Вклада
Переключатели
Северное
Центральное
Восточное
Поле
Примечание
3. Рабочему листу Excel c именем «Лист1» присвойте имя «Меню», а рабочему листу «Лист2» - «База».
4. На рабочем листе с именем «Меню» поместите элемент управления Кнопка панели элементов Visual Basic и поместите на ней надпись «Прием вклада». С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно.
5. Для кнопки «Прием вклада» запишите код:
Private Sub CommandButton1_Click()
'Вызываем процедуру формирования заголовков БД
ЗаголовокРабочегоЛиста
End Sub
6. Для формирования заголовков столбцов базы данных создайте процедуру Sub пользователя, которая будет вызываться из процедуры обработки кнопки рабочего листа Прием вклада. Для этого выполните команду меню Visual Basic Вставка, Процедураи присвойте ей имя ЗагловокРабочегоЛиста. Процедура выполняет следующие действия:
· проверяет, заполнена ли первая строка – строка заголовков столбцов (по назначению ячейки А1), если заполнена, то не выполняет никаких действий, завершает работу и передает управление в точку вызова;
· если первая строка не заполнена, то в ячейки первой строки рабочего листа записывает названия граф таблицы базы данных, комментарии к ним, закрепляет первую строку и завершает работу, передавая управление в точку своего вызова.
В окне редактирования кода введите текст программы этой процедуры:
11. В процедуру обработки события Click элемента Кнопка с именем «Выход» поместите код:
Private Sub Выход_Click()
'Активизируем рабочий лист с именем Меню
Sheets("Меню").Activate
'Завершаем выполнение программы
End
End Sub
12.
Перейдите в приложение MS Excel, активизируйте рабочий лист Меню, изображенный на рисунке 47 и щелкните на кнопке «Прием вклада». Программа должна активизироваться, и на экране появиться созданное диалоговое окно (рисунок 46).
Рисунок 47. Законченный вид листа «Меню»
13. Отладьте и проверьте работу программы во всех режимах.