Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчеты по лабам вар 0.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
539.98 Кб
Скачать

Лабораторная работа №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