Function Amortisman(AlisTarihi As Date, Maliyet As Currency, Oran As Single, _
Kist As Boolean, Normal As Boolean, Hizli As Boolean, HesaplanacakYil As Integer) As Currency
sure = (Year(AlisTarihi) - 1) + (1 / Oran)
If HesaplanacakYil > sure Then Exit Function
'Normal
If Kist = False And Normal = True And Hizli = False Then
Amortisman = Round((Maliyet * Oran), 2)
End If
'Kıst-Normal
If Kist = True And Normal = True And Hizli = False Then
KistKatsayi = 13 - (Month(AlisTarihi))
If HesaplanacakYil = sure Then KistKatsayi = 12 + (12 - KistKatsayi)
If HesaplanacakYil <> Year(AlisTarihi) And HesaplanacakYil <> sure Then KistKatsayi = 12
Amortisman = Round((Maliyet * Oran) / 12 * KistKatsayi, 2)
End If
'Hızlı-Normal
If Kist = False And Normal = True And Hizli = True Then
If Oran > 0.25 Then Oran = 0.25
Oran = Oran * 2
Donem = (sure - Year(AlisTarihi))
DonemSayaci = 0
alıs = sure - Donem
For byt = alıs To sure
Amortisman = Round((Maliyet * (1 - Oran) ^ DonemSayaci) * Oran, 2)
If DonemSayaci <> Donem Then DonemSayaci = DonemSayaci + 1
biriktir = Amortisman + biriktir
If alıs = HesaplanacakYil Then Exit Function
If DonemSayaci = Donem Then
Amortisman = Maliyet - biriktir
Exit Function
End If
alıs = alıs + 1
Next byt
End If
'Hızlı-Kıst
If Kist = True And Normal = False And Hizli = True Then
If Oran > 0.25 Then Oran = 0.25
Oran = Oran * 2
If HesaplanacakYil = Year(AlisTarihi) Then
KistKatsayi = 13 - (Month(AlisTarihi))
Amortisman = Round((Maliyet * Oran) / 12 * KistKatsayi, 2)
Exit Function
End If
If HesaplanacakYil <> Year(AlisTarihi) And HesaplanacakYil <> sure Then KistKatsayi = 12
KistKatsayi2 = 13 - (Month(AlisTarihi))
Amortisman2 = Round((Maliyet * Oran) / 12 * KistKatsayi2, 2)
Maliyet2 = Maliyet - Amortisman2
Donem = (HesaplanacakYil - Year(AlisTarihi)) - 1
If sure <> HesaplanacakYil Then
Amortisman = Round((Maliyet2 * (1 - Oran) ^ Donem) * Oran, 2)
ElseIf sure = HesaplanacakYil Then
sure = sure - 1
For byt = Year(AlisTarihi) To sure - 1
Donem = (sure - Year(AlisTarihi)) - 1
sure = sure - 1
Amortisman = Amortisman + Round((Maliyet2 * (1 - Oran) ^ Donem) * Oran, 2)
Next byt
Amortisman = Maliyet - Amortisman - Amortisman2
End If
End If
End Function