Tipp 11.5 - Abschreibungsplan
Wie kann ich einen optimalen Abschreibungsplan ermitteln?
Unternehmen, die an hohen Abschreibungsbeträgen interessiert sind, machen von der Möglichkeit des Übergangs von der geometrisch-degressiven auf die lineare Abschreibung Gebrauch, und zwar in dem Jahr, in dem die lineare Abschreibung vom aktuellen Restbuchwert die geometrisch-degressive überschreitet.
Ein kleines Beispiel: Eine Maschine, die 40.000 Euro kostet, soll innerhalb von 10 Jahren abgeschrieben werden. Man kann entweder geometrisch-degressiv oder linear abschreiben.
Um den optimalen Abschreibungsbetrag zu ermitteln, kombinieren wir unsere Abschreibungsmethoden DDB und SLN. Auf unser o.g. Beispiel bezogen, würde die Prozedur nun folgendermaßen ausschauen:
Beispiel:
' Optimaler Abschreibungsplan Sub AfaPlan(pcWert As Currency, pcRestwert As Currency, piDauer As Integer) '// ----------------------------------------------------- '// Methode | Berechnet einen optimalen Afa-Plan '// ----------------------------------------------------- '// Parameter | pcWert - Anschaffungswert ' pcRestwert - Restbuchungswert ' piDauer - Nutzungsdauer '// ----------------------------------------------------- '// Erstellt | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- '// Beispielaufruf im Direktfenster z.B.: ' AfaPlan 40000,0,10 '// ----------------------------------------------------- Dim iLoop As Integer Dim sMsg As String Dim sFormat As String Dim cLia As Currency Dim cGda As Currency Dim cRestLia As Currency Dim cRestGda As Currency Dim cWert As Currency Dim lChange As Long On Error GoTo AfaPlan_Err sFormat = "###,##0.00" ' Kopfzeile definieren sMsg = "Afa-Plan" & vbCrLf & String$(35, "=") 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$(35, "-") & 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" sMsg = sMsg & Space(4 - Len("Typ")) & "Typ" & vbCrLf ' Abschreibungsbetrag errechnen cLia = CCur(SLN(pcWert, pcRestwert, piDauer)) ' Rest-/Startwert zuweisen cRestLia = pcWert cRestGda = pcWert ' Für die rechtsbündige Formatierung, ' damit die Abstände gleich bleiben cWert = pcWert ' Initialisierung des Wechsels: ' die geometrisch-degressive Afa lohnt sich ' erst bei einer Abschreibungsdauer von über ' 5 Jahren If piDauer > 5 Then lChange = 0 Else lChange = 2 End If ' Schleife über die Nutzungsdauer For iLoop = 1 To piDauer ' Wenn noch kein Wechsel erfolgt If lChange = 0 Then ' Abschreibungsbetrag errechnen cGda = DDB(pcWert, pcRestwert, piDauer, iLoop) ' Restwert berechnen cRestGda = cRestGda - cGda ' Wenn der GDA-Betrag kleiner als der LIA-Betrag ist ' Wechsel initiieren If cGda < cLia Then lChange = 1 End If ' Falls noch kein Wechsel oder die Initialisierung ' erfolgt ist If lChange = 0 Or lChange = 1 Then ' Ausgabe der Abschreibungswert, Formatierung s.o. If lChange = 0 Then sMsg = sMsg & FormatAfaPlan(iLoop, cWert, cGda, cRestGda, "d") Else sMsg = sMsg & FormatAfaPlan(iLoop, cWert, cGda, cRestGda, "d / Ü: LIA") End If ' Falls die Initialisierung erfolgt ist If lChange = 1 Then ' Wechsel auf liniare Abschreibung lChange = 2 ' Restjahre für den Wechsel zuweisen piDauer = iLoop ' Startwert für den Wechsel zuweisen pcWert = cRestGda ' Restwert für den Wechsel zuweisen cRestLia = pcWert End If ' Wechsel auf liniare Afa Else ' Abschreibungsbetrag errechnen cLia = CCur(SLN(pcWert, pcRestwert, piDauer)) ' Restwert errechnen cRestLia = cRestLia - cLia ' Ausgabe der Abschreibungswert, Formatierung s.o. sMsg = sMsg & FormatAfaPlan(iLoop, cWert, cLia, cRestLia, "l") End If Next iLoop ' Ausgabe im Direktfenster Debug.Print sMsg AfaPlan_Exit: On Error GoTo 0 Exit Sub AfaPlan_Err: MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "modFinancial.AfaPlan" Resume AfaPlan_Exit End Sub ' Hilfsfunktion für die rechtsbündige Formatierung Public Function FormatAfaPlan(piYear As Integer, _ pcWert As Currency, _ pcAfa As Currency, _ pcRest As Currency, _ psTyp As String) _ As String Dim sMsg As String Dim sFormat As String On Error GoTo FormatAfaPlan_Err sFormat = "###,##0.00" sMsg = sMsg & Space(4 - Len(CStr(piYear))) & CStr(piYear) sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 _ - Len(Format$(pcAfa, sFormat))) _ & Format$(pcAfa, sFormat) sMsg = sMsg & Space(Len(Format$(pcWert, sFormat)) + 1 _ - Len(Format$(pcRest, sFormat))) _ & Format$(pcRest, sFormat) sMsg = sMsg & Space(Len(psTyp) + 1 - Len(psTyp)) & psTyp sMsg = sMsg & vbCrLf FormatAfaPlan = sMsg FormatAfaPlan_Exit: On Error GoTo 0 Exit Function FormatAfaPlan_Err: MsgBox "Fehler " & Err.Number & ": " & _ Err.Description, vbCritical, _ "modFinancial.FormatAfaPlan" Resume FormatAfaPlan_Exit End Function
Das Ergebnis im Direktfenster
Afa-Plan =================================== Anschaffungswert: 40.000,00 Nutzungsdauer: 10 Jahre ----------------------------------- Jahr Afa Rest Typ 1 8.000,00 32.000,00 d 2 6.400,00 25.600,00 d 3 5.120,00 20.480,00 d 4 4.096,00 16.384,00 d 5 3.276,80 13.107,20 d / Ü: LIA 6 2.621,44 10.485,76 l 7 2.621,44 7.864,32 l 8 2.621,44 5.242,88 l 9 2.621,44 2.621,44 l 10 2.621,44 0,00 l
Je nachdem, ob Sie gleich bleibende oder zunächst hohe Abschreibungssätze wünschen, wählen Sie die Abschreibungsmethode. Wenn Sie an ständig hohen Abschreibungssätzen interessiert sind, können Sie von der degressiven zur linearen Abschreibung übergehen, nicht jedoch umgekehrt. Es lohnt sich, wenn der lineare Abschreibungssatz vom aktuellen Buchwert höher als der geometrisch-degressive Satz ist. Im Beispiel sind lineare und degressive Sätze vom Buchwert des 6. Jahres gleich:
- degressiv: 2.621,44 Euro
- linear: 13.107,20 Euro / 5 = 2.621,44 Euro
Sie können im sechsten oder einem späteren Jahr umsteigen. Oben sind die Werte für den Wechsel im 6. Jahr berechnet.