Практика
Для решения задачи нахождения чистого текущего объема инвестиций и управления размером диалогового окна с помощью редактора пользовательских форм cоздадим диалоговое окно Чистый текущий объем инвестиций (рис. У6.1). Отметим, что данное приложении предназначено для расчета до шести финансовых операций (инвестиций и прибыли).
При инициализации диалогового окна его отображение на экране имеет меньшую ширину (в нем только поля ввода для двух выплат), хотя при его конструировании в него помещается поля ввода для всех шести выплат. При помощи счетчика Число операций можно управлять шириной диалогового окна так, чтобы было достаточно места для размещения в нем того количества полей ввода данных, которое задается счетчиком (рис. У6.2).
Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.
Рис. У6.1. Диалоговое окно Чистый текущий объем инвестиций
Рис. У6.2. Диалоговое окно
Чистый текущий объем инвестиций со значением счетчика
Число операций равным 4
UserForm_Initialize |
| ||||
Нажатие кнопки вычислить запускает на выполнение процедуры CoramandButtonl_Click | Создает массив, элементами которого являются инвестиции и прибыли, и массив лет, когда совершались операции. 5. Проверяет корректность ввода данных. 6. Вычисляет чистый текущий объем инвестиций.
| |
| ||
Нажатие кнопки отмена запускает на выполнение процедуру CoramandButton2_Click | Закрывает диалоговое окно. | ||||
SpinButtonl Change | Изменяет при помощи счетчика размер диалоге вого окна благодаря управлению свойством width в зависимости от введенного числа операций. | ||||
'
' Переменная уровня модуля
'
Dim n As Integer
'
' n - число операций
'
Private Sub CommandButtonl_Click()
'
' Процедура расчета чистого текущего объема инвестиций
'
Dim Операции(1 То 6) As Double
Dim Годы(1 То 6) As Byte
Dim Процент As Double
Dim i As Integer
Dim ТекущийОбъем As Double
' Операции - массив инвестиций и прибылей
' Годы - массив лет, когда совершались операции
' Процент - годовая процентная ставка
' ТекущийОбъем - объем чистого начального.вклада
' i - вспомогательная переменная
'
Dim ПолеВвода(1 То 6, 1 To 2) As Object
'
' Вспомогательный массив объектов, который будет
' использоваться при вводе данных из полей ввода
' Задание компонент массива объектов
'
Set ПолеВвода(1, 1) = TextBoxl
Set ПолеВвода (2, 1) = TextBox2
Set ПолеВвода(3, 1) = TextBox3
Set ПолеВвода(4, 1) = TextBox4
Set ПолеВвода(5, 1) = TextBox5
Set ПолеВвода(6, 1) = TextBox6
Set ПолеВвода(1, 2) = TextBoxl0
Set ПолеВвода(2, 2),= TextBoxl1
Set ПолеВвода(3, 2) '= TextBoxl2
Set ПолеВвода(4, 2) = TextBoxl3
Set ПолеВвода(5, 2) = TextBoxl4
Set ПолеВвода(6, 2) = TextBoxl5
'
' Проверка того, являются ли введенные в диалоговом окне значения числами
'
For i = 1 То n
If IsNumeric(ПолеВвода(i, 1).Text) = False Then
MsgBox "Ошибка в размере прибыли или инвестиции",
vblnformation, "Расчет инвестиции" ПолеВвода(i, l).SetFocus
Exit Sub
End If
Next i
For i = 1 To n
If IsNumeric(ПолеВвода(i, 2).Text) = False Then
MsgBox "Ошибка в годе", vblnformation, "Расчет инвестиции" ПолеВвода(i, 2).SetFocus Exit Sub End If Next i
If isNumeric(TextBoxS.Text) = False Then
MsgBox "Ошибка в процентной ставке", vblnformation,
"Расчет инвестиции" TextBoxS.SetFocus
Exit Sub
End If
' Ввод в массивы Операции и Годы данных из диалогового окна
'
For i = 1 То n
Операции(i) = CDbl(ПолеВвода(i, l).Text)
Годы(1) = CByte(ПолеВвода(i, 2).Text) Next i
'
' Ввод процентной ставки '
Процент = CDbl(TextBoxS.Text) / 100
' Расчет чистого текущего объема инвестиции
ТекущийОбъем = 0 For i = 1 То п
ТекущийОбъем = ТекущийОбъем + Операции(i) / (1 + Процент) ^ Годы(1)
Next i
' Вывод в диалоговом окне величины чистого текущего объема инвестиций
'
ТекущийОбъем = Format(ТекущийОбъем, "Fixed")
TextBox9.Text = CStr(ТекущийОбъем)
End Sub
Private Sub CommandButton2_Click()
'
' Процедура закрывает диалоговое окно
'
UserForml.Hide End Sub
'
Private Sub SpinButtonl_Change()
'
' Процедура изменения размера диалогового окна
' в зависимости от введенного числа операций
' Вывод числа операций со счетчика в поле ввода
'
TextBoxV.Text = CStr(SpinButtonl.Value)
'
' Присвоение значения переменной n (числа операций) из поля ввода
n = CInt(TextBox7.Text)
'
' Изменение размера диалогового окна
'
UserForml.Width = 120 + (n - 1) * 50
'
End Sub
'
Private Sub UserForm_Initialize()
'
' Процедура активизации диалогового окна Чистый текущий объем инвестиций
'
' Устанавливается первоначальное значение счетчика
SpinButtonl.Value = 2
' Запрет не программного ввода данных в поля Процентная ставка
' и Чистый текущий объем инвестиций
'
TextBox7.Enabled = False TextBox9.Enabled = False
' Назначение клавише <Enter> функции кнопки Вычислить
'
CommandButtonl.Default = True
' Назначение функции клавиши <Esc> кнопке Отмена
'
CommandButton2.Cancel = True
' Установка максимального и минимального
' допустимого значений счетчика, а также текста всплывающей подсказки
With SpinButton1
.Max = 6
.Min = 1
.ControlTipText = "Ввод числа операций"
End With
End Sub