Tipp 11.3 - Lineare Afa
Wie kann ich eine lineare Abschreibung berechnen?
Anlagegegenstände unterliegen der Wertminderung. Die Abschreibungen sollen diese Wertminderung erfassen. Dazu stehen verschiedene Verfahren zur Verfügung, einmal die lineare Abschreibung mit gleich bleibenden Abschreibungsbeträgen oder die degressive Abschreibung, bei der die anfänglichen Raten sehr hoch sind.
Bei der linearen Abschreibung wird jährlich derselbe Betrag abgeschrieben; dies entspricht der einfachen Zinsrechnung. Der jährliche Abschreibungsbetrag (A) ergibt sich aus dem Anschaffungs- oder Herstellungswert (Bo) geteilt durch die gewöhnliche Nutzungsdauer (n).
Der jährliche Abschreibungsbetrag wird kleiner, wenn ein Restbuchwert (Bn) oder Schrottwert (S) berücksichtigt wird. Hier ergibt sich dann der Abschreibungsbetrag durch (Bo – Bn) / n.
In Excel können Sie für die lineare Afa die Funktion LIA einsetzen. In VBA finden Sie ein Gegenstück: die SLN Funktion. Dieser Funktion können Sie folgende Parameter mitgeben:
- cost: Anschaffungswert
- salvage: Restbuch- bzw. Schrottwert
- life: Nutzungsdauer
Hier nun ein kleines Beispiel: Eine Maschine im Wert von 10.000 Euro soll in 5 Jahren linear auf einen Restbuchwert von 100 Euro abgeschieben werden. So könnte die Funktion ausschauen:
Beispiel:
' Straight-line depreciation of an asset for a single period Sub LiaAfa(pcWert As Currency, pcRestwert As Currency, piDauer As Integer) '// ----------------------------------------------------- '// Methode | Berechnet eine lineare Abschreibung '// ----------------------------------------------------- '// Parameter | pcWert - Anschaffungswert ' pcRestwert - Restbuchungswert ' piDauer - Nutzungsdauer '// ----------------------------------------------------- '// Erstellt | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf im Direktfenster z.B.: ' LiaAfa 10000,100,5 '// ----------------------------------------------------- Dim iLoop As Integer Dim sMsg As String Dim sFormat As String Dim cAfa As Currency Dim cRest As Currency On Error GoTo LiaAfa_Err sFormat = "###,##0.00" ' Kopfzeile definieren sMsg = "Lineare Afa" & vbCrLf & String$(30, "=") sMsg = sMsg & vbCrLf & "Anschaffungswert: " & Format$(pcWert, sFormat) sMsg = sMsg & vbCrLf & "Nutzungsdauer: " & piDauer & " Jahre" ' Diese spezielle Formatierung wird angewendet, um ' eine rechtsbündige Formatierung im Direktfenster ' zu realisieren sMsg = sMsg & vbCrLf & String$(30, "-") & vbCrLf sMsg = sMsg & "Jahr" ' dito, siehe zuvor sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 - Len("Afa")) & "Afa" sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 - Len("Rest")) & "Rest" & vbCrLf ' Abschreibungsbetrag errechnen cAfa = CCur(SLN(pcWert, pcRestwert, piDauer)) ' Rest-/Startwert zuweisen cRest = pcWert ' Schleife über die Nutzungsdauer For iLoop = 1 To piDauer ' Restwert berechnen cRest = cRest - cAfa ' Ausgabe der Abschreibungswert, Formatierung s.o. sMsg = sMsg & Space(4 - Len(CStr(iLoop))) & CStr(iLoop) sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 _ - Len(Format$(cAfa, sFormat))) _ & Format$(cAfa, sFormat) sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 _ - Len(Format$(cRest, sFormat))) _ & Format$(cRest, sFormat) sMsg = sMsg & vbCrLf Next iLoop ' Ausgabe im Direktfenster Debug.Print sMsg LiaAfa_Exit: On Error GoTo 0 Exit Sub LiaAfa_Err: MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "modFinancial.LiaAfa" Resume LiaAfa_Exit End Sub
Das Ergebnis im Direktfenster
Lineare Afa ------------------------------ Anschaffungswert: 10.000,00 Nutzungsdauer: 5 Jahre ------------------------------ Jahr Afa Rest 1 1.980,00 8.020,00 2 1.980,00 6.040,00 3 1.980,00 4.060,00 4 1.980,00 2.080,00 5 1.980,00 100,00