Урок 4
Тема: Расчет амортизации
Цель урока
В
уроке разрабатывается приложение, решающее задачу расчет амортизации в
зависимости от выбранного метода: стандартного или k-кратного учета
амортизации. На примере данного приложения вы узнаете, что такое:
Финансовые функции расчета амортизации
Управление видимостью отдельных элементов
управления в окне диалога
Программный вывод объектов WordArt на рабочий
лист
Теория
Под амортизацией подразумевается уменьшение
стоимости имущества в процессе эксплуатации. Обычно оценивают величину этого
уменьшения на единицу времени.
Функция рабочего листа амр (SLN) возвращает величину амортизации имущества за один
период времени, используя метод равномерной амортизации.
Синтаксис:
АМР(стоимость; остаток; время эксплуатации)
Аргументы:
|
Стоимость |
Начальная стоимость имущества |
|
Остаток |
Остаточная стоимость в конце периода амортизации
(ликвидационная стоимость) |
|
Время_эксплуатации |
Количество периодов, за которые собственность
амортизируется (период амортизации) |
Предположим, вы купили за 6 000 руб. компьютер, который после
5 лет эксплуатации будет оцениваться в 1
000 руб. Снижение стоимости для каждого года эксплуатации вычисляется
формулой =амр (6000; 1000; 5),
которая определяет 1 000p.
Функция амгд (syd) возвращает
годовую амортизацию имущества для указанного периода.
Синтаксис:
АМГД (стоимость; остаток; время эксплуатации; период)
Аргументы:
|
Стоимость |
Начальная стоимость
имущества |
|
Остаток |
Остаточная стоимость в конце периода амортизации
(ликвидационная стоимость) |
|
Время_эксплуатации |
Количество периодов, за которые собственность
амортизируется (период амортизации) |
|
Период |
Номер периода для вычисления амортизации (должен
вычисляться в тех же единицах, что и время полной амортизации) |
При расчете предыдущего примера получим, что за
первый год эксплуатации компьютера амортизация вычисляется формулой =Амгд (6000; 1000; 5; l), которая возвращает
значение 1666.67р., а за последний — формулой =Амгд
(6000; 1000; 5; 5), которая
возвращает значение 333.33р.
Функция доб (db) возвращает амортизацию имущества на заданный
период, используя метод постоянного учета амортизации.
Синтаксис:
ДОБ (стоимость; остаток; время_эксплуатации; период; месяц)
Аргументы:
|
Стоимость |
Начальная стоимость
имущества |
|
Остаток |
Остаточная стоимость в конце периода амортизации
(ликвидационная стоимость) |
|
Время_эксплуатации |
Количество периодов, за которые собственность
амортизируется (период амортизации) |
|
Период |
Номер периода для вычисления амортизации (должен
вычисляться в тех же единицах, что и время полной амортизации) |
|
Месяц |
Количество месяцев в первом году. По умолчанию
принимает значение 12 |
Метод
постоянного учета амортизации вычисляет амортизацию, используя фиксированную
процентную ставку.
При
расчете предыдущего примера получим амортизацию за время эксплуатации
компьютера:
=ДОБ (6000; 1000; 5; 1 ) возвращает значение 1806.00р.
=ДОБ (6000; 1000; 5; 2) возвращает значение 1262.39р.
=ДОБ (6000; 1000; 5; 3) возвращает значение
882.41р.
=доб (6000; 1000; 5; 4) возвращает значение 616.81р.
=ДОБ (6000; 1000; 5; 5) возвращает значение 431.15p.
Функция
ддоб (ddb) возвращает величину
амортизации имущества для указанного периода, используя метод двукратного (или
k--кратного) учета амортизации.
Синтаксис:
ДДОБ (стоимость; остаток; время эксплуатации;
период; коэффициент)
Аргументы:
|
Стоимость |
Начальная стоимость
имущества |
|
Остаток |
Остаточная стоимость в конце периода амортизации
(ликвидационная стоимость) |
|
Время_эксплуатации |
Количество периодов, за которые собственность
амортизируется (период амортизации) |
|
Период |
Номер периода для вычисления амортизации (должен
вычисляться в тех же единицах, что и время полной амортизации) |
|
Коэффициент |
Норма снижения балансовой стоимости. По умолчанию
равен 2 |
Метод
двукратного учета амортизации предполагает ускоренную амортизацию имущества.
При этом амортизация является максимальной в первый период и снижается в
последующие периоды.
В
примере с компьютером по методу двукратной амортизации она составит:
=ДДОБ (6000; 1000; 5; 1) возвращает значение 2400.00р.
=ДДОБ (6000; 1000; 5; 2) возвращает
значение 1440.00р.
=ДДОБ (6000; 1000; 5; 3) возвращает значение 864.
00р.
=ДДОБ
(6000; 1 000; 5; 4) возвращает значение 296.00р.
=ДДОБ
(6000; 1000; 5; 5) возвращает
значение 0.00р.
В
следующем разделе рассматривается разработка приложения, в котором по начальной
и остаточной стоимостям оборудования, сроку амортизации и расчетному периоду
амортизации при выбранном методе расчета находится величина амортизации. Кроме
того, в диалоговом окне, с помощью которого происходит управление работой
приложения, используя свойство Visible осуществляется
управление видимостью поля, счетчика и надписи. Изменение свойства Visible происходит при выборе метода амортизации. Для придания большей
презентабельности отчету об амортизации на рабочий лист внедряется объект WordArt при помощи метода AddTextEffect семейства Shapes.
Для
решения задачи нахождения вычисления амортизации оборудования по стандартному
методу или методу k-кратного учета с помощью редактора пользовательских форм
создадим диалоговое окно расчет
амортизации (рис. У4.1.)
Обсудим,
как приведенная ниже программа решает перечисленные задачи и что происходит в
программе.

Private Sub CommandButton1_Click()
' Процедура
расчета амортизации
Dim В As Double
Dim E As Double
Dim Am As Double
Dim Ye As Integer
Dim Yc As Integer
Dim k As Integer
Dim Flag As Boolean
' В -
первоначальная стоимость оборудования, для которого
'
подсчитывается амортизация
' Е -
остаточная стоимость оборудования
' Ye - время
полной амортизации
' Yc -
период, для которого рассчитывается амортизация
' Flag -
логическая переменная, равная True, если амортизация
'
рассчитывается стандартным методом, и False, если методом
' k-кратного
учета
Dim n As Integer
Dim j As Integer
' n, j -
вспомогательные переменные, используемые для удаления
' ранее
созданных графических объектов
' Считывание
в переменные из диалогового окна значений параметров
В = CDbl(TextBox1.Text)
Е = CDbl(TextBox2.Text)
Ye = CInt(TextBox3.Text)
Yc = CInt(TextBox4.Text)
' Проверка
согласованности вводимых данных
If В < Е Then
MsgBox "Остаток больше начальной
стоимости", _
vbExclamation, "Амортизация"
TextBoxl.SetFocus
Exit Sub
End If
If Ye < Yc Then
MsgBox "Ошибка в сроке амортизации", _
vbExclamation, "Амортизация"
TextBox3.SetFocus
Exit Sub
End If
' Определение
выбранного переключателя:
' если
Стандартный, то переменной Flag присваивается True;
' если
k-кратного учета, то переменной Flag присваивается False
If OptionButton1.Value = True Then
Flag = True
Else
Flag = False
End If
' Расчет
амортизации в зависимости от выбранного метода
If Flag = True Then
' Стандартным
методом
Am =
Application.SYD(В, Е, Ye, Yc)
Else
' Методом
k-кратного учета
k =
CInt(TextBox6.Text)
Am =
Application.DDB(B, E, Ye, Yc, k)
End If
' Вывод
величины амортизации в диалоговом окне
If Am >= 0.01 Then
Am = Format(Am, "Fixed")
Else
Am = О
End If
TextBox5.Text = CStr(Am)
' Подготовка
рабочего листа для ввода данных
' Определения
общего числа объектов Shape на рабочем листе
n = ActiveSheet.Shapes.Count
' Удаление с
рабочего листа всех ранее созданных объектов Shape
If n >= 1 Then
For j = 1 To n
ActiveSheet.Shapes(j).Select
Selection.Delete
Next j
End If
' Создание
объекта WordArt
ActiveSheet.Shapes.AddTextEffect(msoTextEffect14,
"Амортизация", _
"Impact", 18#, msoTrue, msoFalse, 166.5,
105#).Select
' Сдвиг
объекта WordArt
Selection.ShapeRange.IncrementLeft 111#
Selection.ShapeRange.IncrementTop -100
' Изменение
ширины столбцов Am и В и установка в
' них режима
ввода текста с переносом
ActiveSheet.Columns("Am").Select
With Selection
.ColumnWidth = 30
.WrapText = True
End With
ActiveSheet.Columns("B").Select
With Selection
.ColumnWidth = 20
.WrapText = True
End With
' Снятие
выделения со столбца В выбором одной ячейки
ActiveSheet.Range("B1").Select
' Ввод
заголовков полей на рабочем листе
With ActiveSheet
.Range("A1").Value = "Начальная
стоимость"
.Range("A2").Value = "Остаточная
стоимость"
.Range("A3").Value = "Время полной
амортизации"
.Range("A4").Value = "Период, для
которого рассчитывается амортизация"
.Range("A5").Value = "Расчет
выполнен"
.Range("A6").Value = "Величина
амортизации"
End With
' Ввод данных
в ячейки рабочего листа
With ActiveSheet
.Range("B1").Value = В
.Range("B2").Value = Е
.Range("B3").Value = Ye
.Range("B4").Value = Yc
.Range("B6").Value = Am
.Range("B5").WrapText = True
If Flag = True Then
.Range("B5").Value = "стандартным
методом"
Else
.Range("B5").Value = "методом "
& CStr(k) & _
" кратного учета аморгизации"
End If
End With
End Sub
Private Sub CommandButton2_Click()
' Процедура
закрытия диалогового окна
UserForm1.Hide
End Sub
Private Sub OptionButton1_Click()
' Процедура
скрывает название, поле и счетчик для ввода
' кратности
амортизации
Label6.Visible = False
TextBox6.Visible = False
UserForm1.SpinButton1.Visible = False
End Sub
Private Sub OptionButton2_Click()
' Процедура
делает видимыми название, поле для ввода
' кратности
амортизации и счетчик
Label6.Visible = True
TextBox6.Visible = True
SpinButton1.Visible = True
End Sub
Private Sub SpinButton1_Change()
' Процедура
вводит значение счетчика в поле ввода
TextBox6.Text = CStr(SpinButton1.Value)
End Sub
Private Sub UserForm_Initialize()
' Процедура
активизирует диалоговое окно Расчет амортизации
' При инициализации
окна выбран первый переключатель
OptionButton1.Value = True
'
Первоначально название, поле и счетчик для ввода
' кратности
амортизации не отображаются в диалоговом окне
TextBox5.Enabled = False
TextBox6.Visible = False
Label6.Visible = False
SpinButton1.Visible = False
' Минимальное
значение и шаг,
' с которым
изменяются значения счетчика
With SpinButton1
.Min = 2
.SmallChange = 2
End With
' Функция
кнопки Отмена выполняется по умолчанию
CommandButton2.Default = True
' Нажатие
клавиши <Esc> эквивалентно нажатию
кнопки Отмена
CommandButton2.Cancel = True
' Функция
кнопки Вычислить выполняется по нажатию клавиш <Alt>+<D>
' или на
русской клавиатуре <Alt>+<B>
CommandButton1.Accelerator = "D"
' Функция
кнопки Отмена выполняется по нажатию клавиш <Alt>+<J>
' или на
русской клавиатуре <Alt>+<0>
CommandButton2.Accelerator = "J"
UserForm1.Show
End Sub
При
написании программ с внедренными графическими объектами лучше всего
воспользоваться средством MacroRecorder.
Итак,
для активизации MacroRecorder выберите команду Сервис, Макрос, Начать
запись (Tools, Macro, Record New Macro) и запустите MacroRecorder на запись. После задания всех параметров в появившемся диалоговом окне Запись
макроса (Record Macro) и нажатия кнопки ОК появится
плавающая панель инструментов с кнопкой Остановить запись (Stop Recording). Теперь все производимые действия будут записываться до тех пор, пока не
будет нажата эта кнопка. Выполните построение объекта
WordArt по
следующему алгоритму:
1. Нажмите кнопку Добавить объект
WordArt (Insert WordArt) панели инструментов Рисование (Drawing).
2. В появившемся окне Коллекция
WordArt (WordArt Gallery) выберите нужный стиль надписи. Нажмите
кнопку ОК.
3. В появившемся окне Изменение текста
WordArt (Edit WordArt Text) установите шрифт и
размер отображаемого текста, а также в поле Текст (Text)
введите текст, который будет отображаться, например Амортизация . Нажмите кнопку ОК.
4. На рабочем листе появится внедренный объект WordArt. Выберите и перенесите его в требуемое место на этом
листе.
5 Для того чтобы разобраться, как происходит программное удаление объекта WordArt с рабочего листа, выделите его и
удалите с помощью клавиши <Delete>.
Перечисленные
выше действия будут переведены MacroRecorder в следующий макрос.
Sub Макрос1()
' Макрос1 Макрос
' Макрос записан
26.11.99
ActiveSheet.Shapes.AddTextEffect
(msoTextEffect14, _
"Амортизация", "Impact", _
18#, msoTrue, msoFalse, 166.5, 105#).Select
Selection.ShapeRange.IncrementLeft 111#
Selection.ShapeRange.IncrementTop -100.5
ActiveSheet.Shapes("WordArt 1").Select
Selection.Delete
End
Sub
Первые
три инструкции этого макроса предназначены для создания объекта WordArt. Их просто надо скопировать в то место
программы расчета амортизации, где создается этот объект. Две последние
инструкции связаны с удалением объектов WordArt
с рабочего листа. Подсказка со стороны MacroRecorder очень полезна, т. к. у
объекта WordArt нет метода Delete. Удаляемый объект необходимо выбрать, что приведет к образованию объекта Selection. Удалять надо не непосредственно объект WordArt,
а полученный указанным способом объект Selection. Эта идея как раз и
реализована в данном приложении.
Самостоятельное задание
Разработать
приложение, с помощью которого можно:
Либо вычислить значение заданной функции,
скажем у(х) = Sin(x)
/ (1 +
х2), при вводимом значении аргумента и вывести найденное значение в
поле диалогового окна.

Рис.
У4.2. Диалоговое окно Значение или график при выборе переключателя Значение
Либо
изменить значения этой функции на заданном интервале с заданным шагом, вывести
результат табуляции в список и построить график на рабочем листе.
Операция,
выполняемая над функцией, должна устанавливаться выбором переключателя из
группы Операция диалогового окна значение или график. При выборе переключателя
значение в диалоговом окне должны отображаться только элементы управления,
относящиеся к нахождению функции при вводимом значении аргумента (рис. У4.2), а
при выборе переключателя График —
относящиеся к табуляции функции и построению ее графика (рис. У4.3).
