Задание III.
Рассмотрим пример оформления расчета постоянных периодических выплат с построением диаграммы из диалогового окна.
Переименуйте один из листов рабочей книги Excel, присвоив имя: “Выплаты”
З адайте в диапазоне А1:А4, в каждой ячейке соответственно, заголовки данных, которые программа будет обрабатывать. Столбцы с D по G будут использованы под диапазон процентных ставок.
С оздайте Userform как показано на рисунке. Измените его свойство Name, установив в значение: Const_vyp.
Процедуры данной программы выполняют следующие действия в соответствии с кодом:
- кнопке Вычислить
Private Sub cmdCalc_Click()
Dim P, ib, ie, ist As Double
Dim k, i, n, m As Integer
Dim A(), B() As Double
Dim SO, Bl() As String
Dim Area As Object
P = CDbl(txtSsuda.Text)
k = CInt(txtKol.Text)
ib = CDbl(txtBeg.Text) / 100
ie = CDbl(txtEnd.Text) / 100
ist = CDbl(txtStep.Text) / 100
If ie < ib Or ie < ib + ist Then
MsgBox "Ошибка в ставках", vblnformation
Exit Sub
End If
Set Area = Sheets("Выплаты").Cells(1, 4).CurrentRegion
n = Area.Columns.Count
Sheets("Выплаты").Range(Cells(1, 4), Cells(2, n + 3)).Clear
m = (ie - ib) / ist + 1
ReDim A(1 To m)
ReDim B(l To m)
ReDim Bl(1 To m)
With Sheets("Выплаты")
For i = 1 To m
B(i) = ib + ist * (i - 1)
A(i) = Application.Pmt(B(i), k, -P)
A(i) = Format(A(i), "##")
Bl(i) = CStr(Format(B(i), "00.0%"))
.Cells(1, 4 + i - 1).Value = Bl(i)
.Cells(2, 4 + i - 1).Value = A(i)
Next i
End With
With Sheets("Выплаты")
.Range("D3").Value = P
.Range("D4").Value = k
End With
ReDim S(1 To m)
For i = 1 To m
S(i) = CStr(Bl(i)) & " " & CStr(A(i)) & " p."
Next i
For i = 1 To m
ComboBox1.AddItem S(i)
Next i
ComboBox1.Value = 1
Sheets("Выплаты").ChartObjects.Delete
End Sub
- кнопке Отмена
Private Sub cmdCancel_Click()
Unload Me
End Sub
- кнопке Очистить
Private Sub cmdClear_Click()
Dim Area As Object
Dim n, i As Integer
For i = 1 To Sheets("Выплаты").ChartObjects.Count
Sheets("Выплаты").ChartObjects(i).Delete
Next i
Set Area = Sheets("Выплаты").Cells(1, 4).CurrentRegion
n = Area.Columns.Count
With Sheets("Выплаты")
.Range(Cells(1, 4), Cells(2, n + 3)).Clear
.Range("D3").Clear
.Range("D4").Clear
End With
End Sub
- кнопке График
Private Sub cmdGrafik_Click()
Dim Area As Object
Dim n, i As Integer
Set Area = Sheets("Выплаты").Cells(1, 4).CurrentRegion
n = Area.Columns.Count
Sheets("Выплаты").ChartObjects.Add(195, 30, 200, 190).Select
Application.CutCopyMode = False
ActiveChart.ChartWizard Source:= _
Range(Cells(1, 4), Cells(2, n + 3)), _
Gallery:=xlColumn, Format:=1, _
PlotBy:=xlRows, CategoryLabels:=l, _
SeriesLabels:=0, HasLegend:=2, _
Title:="Диаграмма", _
CategoryTitle:="Ставка", _
ValueTitle:="Выплаты", _
ExtraTitle:=""
End Sub
Пояснения к построению диаграммы из проекта.
Метод Add, примененный к ChartObjects, создает новый графический объект, определяя координату его левого верхнего угла, высоту и ширину. Единицей измерения является 1/72 дюйма, а точка с координатами (0, 0) располагается в левом верхнем углу ячейки А1. В общем случае синтаксис метода Add имеет вид:
Add(left, top, width, height),
где left, top — координаты левого верхнего угла, width и height — ширина и высота создаваемого графического объекта. Например, использованная в процедуре конструкция
ActiveSheet.ChartObjects.Add{195, 30, 200, 190).Select
создает на активном листе пустую диаграмму с левым верхним углом в точке с координатами (195, 30), шириной 200 и высотой 190.
Метод Сhartwizard вводит данные и форматирует ранее созданную диаграмму.
Опишем переменные метода Сhartwizard: