Цель урока
В уроке разрабатывается приложение, решающее задачу расчета амортизации в зависимости от выбранного метода: стандартного или А;-кратного учета амортизации. На примере данного приложения вы узнаете, что такое:
Финансовые функции расчета амортизации
Управление видимостью отдельных элементов управления в окне диалога
Программный вывод объектов WordArt на рабочий лист
Практика
Для решения задачи нахождения вычисления амортизации оборудования по стандартному методу или методу к-кратного учета с помощью редактора пользовательских форм создадим диалоговое окно Расчет амортизации (рис. У4.1).
Рис. У4.1. Диалоговое окно Расчет амортизации
Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.
UserForm Initialize |
Активизирует диалоговое окно. Запрещает ввод данных пользователем в поле Кратность метода. Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> -- Вычислить. Назначает кнопке вычислить сочетание клавиш <Alt>+<B>, а кнопке Отмена — <Alt>+<O>. В группе тип амортизации при инициализации диалогового окна назначает выбор переключателя Стандартный метод. За счет выбора этого переключателя при инициализации диалогового окна не отображаются надпись кратность метода и соответствующие ей поле и счетчик (рис. У4.2). Устанавливает для счетчика минимальное значение, равное 2, и шаг изменения значений счетчика, также равный 2, для убыстрения прокрутки ; счетчика. Промежуточные значения вводятся в i поле Кратность метода не с помощью счетчика, i а посредством клавиатуры. | ||||
Рис. У4.2. Диалоговое окно Расчет амортизации при выбранном переключателе Метод k кратного учета
SpinButton1_ Change | Изменяет значение счетчика, которое вводится в i поле Кратность метода . | ||||
OptionButton2_Click | Отображает в диалоговом окне надпись кратность ; метода и соответствующие ей поле и счетчик. | ||||
OptionButton2_Click | Скрывает в диалоговом окне надпись кратность метода и соответствующие ей поле и счетчик. | ||||
Нажатие кнопки вычислить запускает на выполнение процедуру CoramandButton1_Click |
Проверяет согласованность вводимых данных. В случае их несогласованности отображает соответствующее сообщение (рис. У4.3, а и У4.3, б). Используя финансовую функцию рабочего листа SYD (АМГД) и DDB (ДДОБ) вычисляет величину амортизации выбранным методом. Удаляет с рабочего листа все ранее созданные графические объекты и внедряет объект WordArt. Подготавливает рабочий лист для вывода результатов вычислений. Выводит полученные данные на рабочий лист и в диалоговое окно (рис. У 4. 4). | ||||
а)
б)
Рис. У4.3. Сообщения о несогласованности вводимых данных
Рис. У4.4. Отчет, выводимый на рабочем листе программой расчета амортизации
Нажатие кнопки отмена запускает на выполнение процедуру CommandButton2_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 по следующему алгоритму:
Нажмите кнопку Добавить объект WordArt (Insert WordArt) панели инструментов Рисование (Drawing).
В появившемся окне Коллекция WordArt (WordArt Gallery) выберите нужный стиль надписи. Нажмите кнопку ОК.
В появившемся окне Изменение текста WordArt (Edit WordArt Text) установите шрифт и размер отображаемого текста, а также в поле Текст (Text) введите текст, который будет отображаться, например Амортизация . Нажмите кнопку ОК.
На рабочем листе появится внедренный объект WordArt. Выберите и перенесите его в требуемое место на этом листе.
Для того чтобы разобраться, как происходит программное удаление объекта 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. Эта идея как раз и реализована в данном приложении.
РАСЧЕТ АМОРТИЗАЦИИ
УРОК 4. ТЕМА: РАСЧЕТ АМОРТИЗАЦИИ
ЦЕЛЬ УРОКА
ТЕОРИЯ
ПРАКТИКА
САМОСТОЯТЕЛЬНОЕ ЗАДАНИЕ
Урок 4
Тема: Расчет амортизации
Самостоятельное задание
Разработать приложение, с помощью которого можно:
Либо вычислить значение заданной функции, скажем у(х) = Sin(x) / (1 + х2), при вводимом значении аргумента и вывести найденное значение в поле диалогового окна.
Рис. У4.5. Диалоговое окно Значение или график при выборе переключателя Значение
Либо протабулировать значения этой функции на заданном интервале с заданным шагом, вывести результат табуляции в список и построить график на рабочем листе.
Операция, выполняемая над функцией, должна устанавливаться выбором
Переключателя из группы Операция диалогового окна Значение или график.
При выборе переключателя Значение в диалоговом окне должны отображаться только элементы управления, относящиеся к нахождению функции при вводимом значении аргумента (рис. У4.5), а при выборе переключателя график - относящиеся к табуляции функции и построению ее графика (рис. У4.6).
Рис. У4.6. Диалоговое окно Значение или график при выборе переключателя График
Теория
Под амортизацией подразумевается уменьшение стоимости имущества в процессе эксплуатации. Обычно оценивают величину этого уменьшения на единицу времени.
Функция рабочего листа 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.