
препод. к.т.н, доц. Нурматова Е.В.
Методические указания по лабораторным работам по дисциплине 3125 «Информационные технологии» спец. 3514
Лабораторная работа №3. Решение задач финансового анализа в Excel с использованием vba.
Цель работы – ознакомиться с встроенным языком программирования Visual Basic for Application (VBA), выполнив задания по вариантам, предложенным преподавателем. Научиться использовать объекты VB и Excel при решении экономических задач.
Задание I.
Рассмотрим пример оформления расчета краткосрочной ссуды с использованием диалогового окна.
Переименуйте один из листов рабочей книги Excel, присвоив имя: “Ссуда”
З
адайте в диапазоне А1:А5, в каждой ячейке соответственно, заголовки данных, которые программа будет обрабатывать:
В редакторе VBA создайте новую форму диалога (Userform1) как показано на рисунке:
Для настройки каждого элемента управления используйте его окно свойств (клавиша F4 при выделенном элементе управления). Например, чтобы изменить надписи элементов управления вы вводите новый текст в свойство Caption, для того, чтобы пятое поле ввода было недоступно и при этом его цвет фона был серый, задайте его свойству Enabled значение False, а в BackColor установите серый цвет. Свойство Enabled либо позволяет вносить изменения в объект ( true), либо запрещает (false). В примере в пятое поле ввода выводится число, вычисляемое программой. Для этого мы отключаем доступ к полю этим свойством.
В этой лабораторной работе мы не присваиваем имена элементам управления (свойство Name) из-за их ограниченного количества, но вы можете здесь проявить творчество.
Все расчеты и заполнение ячеек рабочего листа будут выполнять программы, назначенные событиям Click каждой кнопки. Для ввода программного кода щелкните дважды по соответствующей кнопке.
Для кнопки Отмена:
Private Sub CommandButton1_Click()
UserForm1.Hide
Unload Me
End Sub
Для кнопки Вычислить:
Private Sub CommandButton2_Click()
Dim P, R, i As Double
Dim D_beginning, D_end As Date
TextBox5.Enabled = False
P = CDbl(TextBox1.Text)
D_beginning = CDate(TextBox2.Text)
D_end = CDate(TextBox3.Text)
i = CDbl(TextBox4.Text) / 100
If D_end < D_beginning Then
MsgBox "Ошибка в датах", vbExclamation, "Расчет ссуды"
Exit Sub
End If
R = P * (1 + i) ^ ((D_end - D_beginning) / 365)
R = Format(R, "Fixed")
TextBox5.Text = CStr(R)
With Worksheets("Ссуда")
Range("B1").Value = P
Range("B2").Value = D_beginning
Range("B3").Value = D_end
Range("B4").Value = i
Range("B5").Value = R
End With
E
nd
Sub
В процедуре проверяется корректность ввода дат, которая в случае несогласования выдает сообщение:
Для кнопки Очистить:
Private Sub CommandButton3_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
Worksheets("Ссуда").Range("B1:B5").Clear
End Sub
В
ажно! Вы, наверное, уже обратили внимание, что процедуры мы создаем именно для объектов формы диалога, где переход между программой и непосредственно Userform возможен в окне навигатора по редактору VBA (View Project Explorer):
Для процедур же обработки для рабочих листов модуль добавляется отдельно (не в Userform), поэтому добавьте в редакторе VB лист модуля и введите следующий код для вызова сформированного окна диалога:
Sub Диалог()
UserForm1.Show
End Sub
Осталось на рабочем листе Ссуда, используя панель инструментов Формы, сформировать кнопку с именем Расчет ссуды и назначить ей макрос Диалог.
Протестируйте работу программы и результат выполнения продемонстрируйте преподавателю.