Лабораторная работа №5
Тема: Работа с формами VBA.
Вариант №0
Задача: С помощью программных средств VBA разработать программу-справочник или специальный калькулятор, реализующую простейший калькулятор (сложение, умножение, деление, вычитание).
П
ояснения:
Панель
инструментов Элементы управления (см.
рис), обычно содержит следующие кнопки:
Выбор
объектов, Надпись, Поле, Поле со списком,
Список, Флажок, Переключатель, Выключатель,
Рамка, Кнопка, Набор вкладок, Набор
страниц, Полоса прокрутки, Счетчик,
Рисунок, RefEdit.
Д
обавление
формы:
Для создания формы калькулятора мы вставили форму и разместили на ней нужное количество кнопок и текстовое поле. В окне свойств задали значения свойства Caption каждого элемента формы. Далее двойным щелчком по элементам формы мы вызывали процедуры их обработки и прописывали код, который должен выполняться при работе с кнопками.
Форма калькулятора
Текст программы:
Опция Explicit принуждает явно описывать переменные, далее идет описание типовпеременных
===========================================================================
Option Explicit
Dim r1, r2 As Double
Dim p As Boolean
Dim oper As String
=============================================================== Следующая процедура запускает форму с калькулятором и отражает ее на экране
====================================================================
Sub Calculator()
Load UserForm.Calculator
Show UserForm
End Sub
================================================================
Ряд следующих процедур являются приватными, то есть работают в рамках формы, и обрабатывают нажатие кнопок с цифрами и знаками действий.
CommandButton1_Click() считывает содержимое текстового поля и если оно не пустое, то преобразует его в число, а переменной oper присвает значение +. Аналогично работают процедуры для других действий.
=====================================================================
Private Sub CommandButton1_Click()
r1 = Val(TextBox1.text)
p = True
oper = "+"
End Sub
================================================================
CommandButton10_Click() проверяет истинность переменной p. Если она истинна, то в текстовом поле пишется 0, затем переменной p присваивается значение ложь. Если в текстовом поле не ноль, то к содержащемуся там числу приписываем 7. Аналогично работают процедуры для кнопок с другими цифрами.
====================================================================
Private Sub CommandButton10_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "7" Else TextBox1.text = "7"
End Sub
Private Sub CommandButton11_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "2" Else TextBox1.text = "2"
End Sub
Private Sub CommandButton12_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "5" Else TextBox1.text = "5"
End Sub
Private Sub CommandButton13_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "8" Else TextBox1.text = "8"
End Sub
Private Sub CommandButton14_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "3" Else TextBox1.text = "3"
End Sub
Private Sub CommandButton15_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "6" Else TextBox1.text = "6"
End Sub
Private Sub CommandButton16_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "9" Else TextBox1.text = "9"
End Sub
Private Sub CommandButton17_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "0" Else TextBox1.text = "0"
End Sub
Private Sub CommandButton18_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = "-" + TextBox1.text Else TextBox1.text = "1"
End Sub
Private Sub CommandButton2_Click()
r1 = Val(TextBox1.text)
p = True
oper = "-"
End Sub
Private Sub CommandButton20_Click()
Unload Me
End Sub
Private Sub CommandButton3_Click()
r1 = Val(TextBox1.text)
p = True
oper = "*"
End Sub
Private Sub CommandButton4_Click()
r1 = Val(TextBox1.text)
p = True
oper = "/"
End Sub
================================================================
Процедура с помощью условного оператора производится обработка нажатия знака равно.
Функция CDbl(Conversion to Doble) преобразует выражение в тип данных двойной точности Double.
====================================================================
Private Sub CommandButton5_Click()
If Not (p) Then r2 = CDbl(TextBox1.text)
If p Then r2 = r1
If oper = "+" Then TextBox1.text = CDbl(r1 + r2)
If oper = "-" Then TextBox1.text = CDbl(r1 - r2)
If oper = "*" Then TextBox1.text = CDbl(r1 * r2)
If oper = "/" Then If r2 <> 0 Then TextBox1.text = CDbl(r1 / r2) Else TextBox1.text = "ERROR"
p = True
End Sub
=================================================================
Следующие две процедуры соответствуют кнопкам CE и ON. Они обращают содержимое текстового поля в 0.
======================================================================
Private Sub CommandButton6_Click()
TextBox1.text = "0"
End Sub
Private Sub CommandButton7_Click()
TextBox1.text = "0"
End Sub
Private Sub CommandButton8_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "1" Else TextBox1.text = "1"
End Sub
Private Sub CommandButton9_Click()
If p Then TextBox1.text = "0"
p = False
If TextBox1.text <> "0" Then TextBox1.text = TextBox1.text + "4" Else TextBox1.text = "4"
End Sub
