На этом шаге мы рассмотрим основные моменты создания указанного приложения.
Для решения задачи нахождения чистого текущего объема инвестиций и управления размером диалогового окна с помощью редактора пользовательских форм cоздадим диалоговое окно Чистый текущий объем инвестиций (рисунок 1).
Рис.1. Диалоговое окно Чистый текущий объем инвестиций
Отметим, что данное приложении предназначено для расчета до шести финансовых операций (инвестиций и прибыли).
При инициализации диалогового окна его отображение на экране имеет меньшую ширину (в нем только поля ввода для двух выплат), хотя при его конструировании в него помещается поля ввода для всех шести выплат. При помощи счетчика Число операций можно управлять шириной диалогового окна так, чтобы было достаточно места для размещения в нем того количества полей ввода данных, которое задается счетчиком (рисунок 2).
Рис.2. Диалоговое окно Чистый текущий объем инвестиций со значением счетчика Число операций равным 4
Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.
Приведем полный текст приложения.
' Переменная уровня модуля Dim n As Integer ' n - число операций Private Sub CommandButton1_Click() ' Процедура расчета чистого текущего объема инвестиций Dim Операции(1 To 6) As Double Dim Годы(1 To 6) As Double Dim Процент As Double Dim i As Integer Dim ТекущийОбъем As Double ' Операции - массив инвестиций и прибылей ' Годы - массив лет, когда совершались операции ' Процент - годовая процентная ставка ' ТекущийОбъем - объем чистого начального.вклада ' i - вспомогательная переменная' Dim ПолеВвода(1 To 6, 1 To 2) As Object ' Вспомогательный массив объектов, который будет ' использоваться при вводе данных из полей ввода ' Задание компонент массива объектов Set ПолеВвода(1, 1) = TextBox1 Set ПолеВвода(2, 1) = TextBox2 Set ПолеВвода(3, 1) = TextBox3 Set ПолеВвода(4, 1) = TextBox4 Set ПолеВвода(5, 1) = TextBox5 Set ПолеВвода(6, 1) = TextBox6 Set ПолеВвода(1, 2) = TextBox7 Set ПолеВвода(2, 2) = TextBox8 Set ПолеВвода(3, 2) = TextBox9 Set ПолеВвода(4, 2) = TextBox10 Set ПолеВвода(5, 2) = TextBox11 Set ПолеВвода(6, 2) = TextBox12 ' ' Проверка того, являются ли введенные в диалоговом окне значения числами For i = 1 To n If IsNumeric(ПолеВвода(i, 1).Text) = False Then MsgBox "Ошибка в размере прибыли или инвестиции", _ vbInformation, "Расчёт инвестиции" ПолеВвода(i, 1).SetFocus Exit Sub End If Next i For i = 1 To n If IsNumeric(ПолеВвода(i, 2).Text) = False Then MsgBox "Ошибка в годе", _ vbInformation, "Расчёт инвестиции" ПолеВвода(i, 2).SetFocus Exit Sub End If Next i If IsNumeric(TextBox14.Text) = False Then MsgBox "Ошибка в процентной ставке", vbInformation, _ "Расчёт инвестиции" TextBox14.SetFocus Exit Sub End If ' Ввод в массивы Операции и Годы данных из диалогового окна For i = 1 To n Операции(i) = CDbl(ПолеВвода(i, 1).Text) Годы(i) = CDbl(ПолеВвода(i, 2).Text) Next i ' ' Ввод процентной ставки Процент = CDbl(TextBox14.Text) / 100 ' Расчет чистого текущего объема инвестиции ТекущийОбъем = 0 For i = 1 To n ТекущийОбъем = ТекущийОбъем + Операции(i) / (1 + Процент) ^ Годы(i) Next i ' Вывод в диалоговом окне величины чистого текущего объема инвестиций ТекущийОбъем = Format(ТекущийОбъем, "fixed") TextBox15.Text = CStr(ТекущийОбъем) End Sub Private Sub CommandButton2_Click() ' Процедура закрывает диалоговое окно UserForm1.Hide End Sub Private Sub SpinButton1_Change() ' Процедура изменения размера диалогового окна ' в зависимости от введенного числа операций ' Вывод числа операций со счетчика в поле ввода TextBox13.Text = CStr(SpinButton1.Value) ' Присвоение значения переменной n (числа операций) из поля ввода n = CInt(TextBox13.Text) ' Изменение размера диалогового окна UserForm1.Width = 210 + (n - 1) * 42 End Sub Private Sub UserForm_Initialize() ' Процедура активизации диалогового окна ' Чистый текущий объем инвестиций ' Устанавливается первоначальное значение счетчика SpinButton1.Value = 2 TextBox13.Enabled = False TextBox15.Enabled = False ' Назначение клавише <Enter> функции кнопки Вычислить CommandButton1.Default = True ' Назначение функции клавиши <Esc> кнопке Отмена CommandButton2.Cancel = True ' Установка максимального и минимального ' допустимого значений счетчика, а также текста всплывающей подсказки With SpinButton1 .Max = 6 .Min = 1 .ControlTipText = "Ввод числа операций" End With End Sub
На следующем шаге мы продолжим разработку приложений.