Тема: Расчет амортизации

Цель урока

В уроке разрабатывается приложение, решающее задачу расчета амортизации в зависимости от выбранного метода: стандартного или А;-кратного учета амортизации. На примере данного приложения вы узнаете, что такое:

  • Финансовые функции расчета амортизации
  • Управление видимостью отдельных элементов управления в окне диалога
  • Программный вывод объектов WordArt на рабочий лист

Теория
Под амортизацией подразумевается уменьшение стоимости имущества в процессе эксплуатации. Обычно оценивают величину этого уменьшения на единицу времени.
Функция рабочего листа AMP (SLN) возвращает величину амортизации имущества за один период времени, используя метод равномерной амортизации.
Синтаксис:
АМР(стоимость; остаток; время_эксплуатации)
Аргументы:

стоимость

Начальная стоимость имущества

остаток

Остаточная стоимость в конце периода амортизации (иногда называется ликвидной стоимостью имущества)

время_эксплуатации

Количество периодов, за которые собственность амортизируется (иногда называется периодом амортизации)

Предположим, вы купили за 6 000 руб. компьютер, который после 5 лет эксплуатации будет оцениваться в 1 000 руб. Снижение стоимости для каждого года эксплуатации вычисляется формулой =дмр(6000; 1000; 5), которая определяет 1 000р.
Функция АМГД (SYD) возвращает годовую амортизацию имущества для указанного периода.
Синтаксис:
АМГД(стоимость; остаток; время_эксплуатации; период)
Аргументы:

стоимость

Начальная стоимость имущества

остаток

Остаточная стоимость в конце периода амортизации (иногда называется ликвидной стоимо- : стью имущества)

время эксплуатации

Количество периодов, за которые собственность амортизируется (иногда называется периодом амортизации)

период

Номер периода для вычисления амортизации (должен измеряться в тех же единицах, что и время полной амортизации)

При расчете предыдущего примера получим, что за первый год эксплуатации компьютера амортизация вычисляется формулой =АМГД(6000;1000;5,-1), которая возвращает значение1 666.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.15р.
Функция ДДОБ (DDB) возвращает величину амортизации имущества для указанного периода, используя метод двукратного (или к- кратного) учета амортизации.
Синтаксис:
ДДОБ(стоимость; остаток; время_эксплуатации; период; коэффициент)
Аргументы:

Стоимость

Начальная стоимость имущества

остаток

Остаточная стоимость в конце периода амортизации (иногда называется ликвидной стоимостью имущества)

время эксплуатации

Количество периодов, за которые собственность амортизируется (иногда называется периодом амортизации)

период

Номер периода для вычисления амортизации (должен измеряться в тех же единицах, что и время полной амортизации)

коэффициент

Норма снижения балансовой стоимости (амортизации). Если коэффициент опущен, то предполагается, что он равен 2 (метод двукратного учета амортизации)

Метод двукратного учета амортизации предполагает ускоренную амортизацию имущества. При этом амортизация является максимальной в первый период и снижается в последующие периоды.
В примере с компьютером по методу двукратной амортизации она составит:
=ДДОБ(6000;юоо;5,-1) возвращает значение 2400.00р.
=ДДОБ{6000; 1000;5;2) возвращает значение 1440. 00р.
=ДДОБ (босо,-1000,-5; 3) возвращает значение 864.00р.
=ДДОБ(6000;1000;5; 4 г возвращает значение 296. 00р.
=ДДОБ (6000,- 1000;5,- 5) возвращает значение 0. 00р.
В следующем разделе рассматривается разработка приложения, в котором по начальной и остаточной стоимостям оборудования, сроку амортизации и расчетному периоду амортизации при выбранном методе расчета находится величина амортизации. Кроме того, в диалоговом окне, с помощью которого происходит управление работой приложения, используя свойство visible осуществляется управление видимостью поля, счетчика и надписи. Изменение свойства Visible происходит при выборе метода амортизации. Для придания большей презентабельности отчету об амортизации на рабочий лист внедряется объект WordArt при помощи метода AddTextEffeet семейства Shapes.
Практика
Для решения задачи нахождения вычисления амортизации оборудования по стандартному методу или методу к-кратного учета с помощью редактора пользовательских форм создадим диалоговое окно Расчет амортизации ( 1).
Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.

UserForm Initialize

  1. Активизирует диалоговое окно.
  2. Запрещает ввод данных пользователем в поле Кратность метода.
  3. Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> -- Вычислить.
  4. Назначает кнопке вычислить сочетание клавиш <Alt>+<B>, а кнопке Отмена — <Alt>+<O>.
  5. В группе тип амортизации при инициализации диалогового окна назначает выбор переключателя Стандартный метод. За счет выбора этого переключателя при инициализации диалогового окна не отображаются надпись кратность метода и соответствующие ей поле и счетчик ( 2).
  6. Устанавливает для счетчика минимальное значение, равное 2, и шаг изменения значений счетчика, также равный 2, для убыстрения прокрутки ; счетчика. Промежуточные значения вводятся в i поле Кратность метода не с помощью счетчика, i а посредством клавиатуры.

 

SpinButton1_ Change

Изменяет значение счетчика, которое вводится в i поле Кратность метода .

OptionButton2_Click

Отображает в диалоговом окне надпись кратность ; метода и соответствующие ей поле и счетчик.

OptionButton2_Click

Скрывает в диалоговом окне надпись кратность метода и соответствующие ей поле и счетчик.

Нажатие кнопки вычислить запускает на выполнение процедуру
CoramandButton1_Click

  1. Проверяет согласованность вводимых данных. В случае их несогласованности отображает соответствующее сообщение ( 3, а и У4.3, б).
  2. Используя финансовую функцию рабочего листа SYD (АМГД) и DDB (ДДОБ) вычисляет величину амортизации выбранным методом.
  3. Удаляет с рабочего листа все ранее созданные графические объекты и внедряет объект WordArt. Подготавливает рабочий лист для вывода результатов вычислений. Выводит полученные данные на рабочий лист и в диалоговое окно (рис. У 4. 4).

 

Нажатие кнопки отмена запускает на выполнение процедуру
CommandButton2_Click

Закрывает диалоговое окно.

Private Sub CommandButtonl_Click()
' Процедура расчета амортизации
'
Dim В As Double
Dim E As Double
Dim A 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(TextBoxl.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 OptionButtonl.Value = True Then
Flag = True
Else
Flag = False
End If
' Расчет амортизации в зависимости от выбранного метода
'
If Flag = True Then
'
' Стандартным методом
A = Application.SYD(В, Е, Ye, Yc)
Else
' Методом k-кратного учета
'
k = CInt(TextBox6.Text)
A = Application.DDB(B, E, Ye, Yc, k)
End If
' Вывод величины амортизации в диалоговом окне
'
If A >= 0.01 Then
A = Format(A, "Fixed")
Else
A = 0
End If
TextBoxS.Text = CStr(A)
'
' Подготовка рабочего листа для ввода данных
'
'
' Определения общего числа объектов 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.AddTextEffeet(msoTextEffect14, "Амортизация",
"Impact", 18#, msoTrue, msoFalse, 166.5, 105#).Select
'
' Сдвиг объекта WordArt
'
Selection.ShapeRange.IncrementLeft 111# Selection.ShapeRange.IncrementTop -100.5
' Изменение ширины столбцов А и В и установка в
' них режима ввода текста с переносом
ActiveSheet.Columns("A").Select
With Selection
.ColuranWidth = 30
.WrapText = True
End With
ActiveSheet.Columns("B")
.Select With Selection
.ColumnWidth = 20 .WrapText = True
End With
' Снятие выделения со столбца В выбором одной ячейки
'
ActiveSheet.Range("Bl").Select
' Ввод заголовков полей на рабочем листе
'
With ActiveSheet
.Range (."Al") .Value = "Начальная стоимость"
.Range("A2").Value = "Остаточная стоимость"
.Range("A3").Value = "Время полной амортизации"
.Range("A4").Value = "Период, для которого рассчитывается амортизация"
.Range("A5").Value = "Расчет выполнен"
.Range("A6").Value = "Величина амортизации"
End With
'
'
' Ввод данных в ячейки рабочего листа
'
With ActiveSheet
.RangeC"B1").Value = В
.Range("B2").Value = Е
.Range("ВЗ").Value = Ye
.Range("B4").Value = Yc
.Range("B6").Value = A
.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 ()
'
' Процедура закрытия диалогового окна
'
UserForml.Hide End Sub
Private Sub OptionButtonl__Click()
'
' Процедура скрывает название, поле и счетчик для ввода
' кратности амортизации
'
Label6.Visible = False
TextBox6.Visible = False
SpinButtonl.Visible = False
End Sub
Private Sub OptionButton2_Click()
'
' Процедура делает видимыми название, поле для ввода
' кратности амортизации и счетчик
Label6.Visible = True
TextBox6.Visible = True
SpinButtonl.Visible = True
End Sub
Private Sub SpinButtonl_Change()
' Процедура вводит значение счетчика в поле ввода
'
TextBox6.Text = CStr(SpinButtonl.Value)
End Sub
Private Sub UserFormJEnitialize()
'
' Процедура активизирует диалоговое окно Расчет амортизации
'
' При инициализации окна выбран первый переключатель
OptionButtonl.Value = True
'
' Первоначально название, поле и счетчик для ввода
' кратности амортизации не отображаются в диалоговом окне i
TextBoxS.Enabled = False
TextBox6.Visible = False
Label6.Visible = False
SpinButtonl.Visible = False
'
' Минимальное значение и шаг,
' с которым изменяются значения счетчика
'
With SpinButtonl .Min = 2 .SmallChange = 2
End With
'
' Функция кнопки Отмена выполняется по умолчанию
'
CommandButton2.Default = True
'
' Нажатие .клавиши <Esc> эквивалентно нажатию кнопки Отмена
CommandButton2.Cancel = True
'
' Функция кнопки Вычислить выполняется по нажатию клавиш <Alt>+<D>
' или на русской клавиатуре <Alt>+<B>
'
CommandButtonl.Accelerator = "D" '
' Функция кнопки Отмена выполняется по нажатию клавиш <Alt>+<J>
' или на русской клавиатуре <Alt>+<0>
CommandButton2.Accelerator = "J"
UserForml.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.04.99 (Андрей)
'
ActiveSheet.Shapes.AddTextEffeet(msoTextEffect!4,
"Амортизация", "Impact",
18#, msoTrue, msoFalse, 166.5, 105#).Select
Selection.ShapeRange.IncrementLeft lilt
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), при вводимом значении аргумента и вывести найденное значение в поле диалогового окна.
  • Либо протабулировать значения этой функции на заданном интервале с заданным шагом, вывести результат табуляции в список и построить график на рабочем листе.

Операция, выполняемая над функцией, должна устанавливаться выбором
Переключателя из группы Операция диалогового окна Значение или график.
При выборе переключателя Значение в диалоговом окне должны отображаться только элементы управления, относящиеся к нахождению функции при вводимом значении аргумента ( 5), а при выборе переключателя график - относящиеся к табуляции функции и построению ее графика ( 6).

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г. Яндекс.Метрика