Tipp 11.4 - Degressive Afa

Wie kann ich eine degressive Abschreibung berechnen?

Die degressive Abschreibung (geometrisch-degressiv) ist durch jährlich sinkende Abschreibungsbeträge gekennzeichnet, da jährlich derselbe Bruchteil eines von Jahr zu Jahr sinkenden Restbuchwertes abgeschrieben wird. Die geometrisch-degressive Abschreibung entspricht daher dem Zinseszins.

Die degressive Abschreibung kann bei der Abschreibung von Gebäuden und bei der Abschreibung von beweglichen Wirtschaftsgütern des Betriebsvermögens genutzt werden. Bei immateriellen Wirtschaftsgütern (z.B. Software-Lizenzen Afa-Dauer 3 Jahre, Patenten usw.) ist eine degressive Abschreibung grundsätzlich nicht möglich. Der Abschreibungssatz darf maximal das Zweifache des linearen Abschreibungssatzes betragen und 20 Prozent nicht übersteigen (gilt ab 1.1.2001).

Ein kleines Beispiel: Ein Unternehmer erwirbt eine Maschine im Wert von 10.000 Euro mit einer Nutzungsdauer von 12 Jahren. Er schreibt seinen Neuerwerb degressiv ab. Die Abschreibung errechnet sich wie folgt:

P = 16,67 % (100 Prozent / 12 Jahre = 8,33 % (linearer Abschreibungssatz); davon 2-facher linearer Afa-Satz: 2 x 8,33 % = 16,67 % (degressiver Abschreibungssatz))

Die Abschreibung würde so ausschauen:

  1. Jahr: 10.000 Euro (Bo) x 16,67 % = 1.667 Euro  (A)
  2. Jahr: 8.333 Euro (BoA 1. Jahr ) x 16,67 % = 1.389 Euro (A)
  3. Jahr: ff.

In Excel können Sie für die degressive Afa die Funktion GDA einsetzen. In VBA finden Sie ein Pendant: die DDB Funktion. Dieser Funktion können Sie folgende Parameter mitgeben:

  • cost: Anschaffungswert
  • salvage: Restbuch- bzw. Schrottwert
  • life: Nutzungsdauer
  • period: gewünschtes Abschreibungsjahr
  • factor: das Maß, um das die Abschreibung abnimmt. Fehlt das Argument, wird es als 2 angenommen (geometrisch-degressive Methode).

Auf unser o.g. Beispiel bezogen, könnte die Funktion so ausschauen:

Beispiel:

'Double-declining balance method
Sub GdaAfa(pcWert As Currency, pcRestwert As Currency, piDauer As Integer)
 
  '// -----------------------------------------------------
  '// Methode   | Berechnet eine degressive Abschreibung
  '// -----------------------------------------------------
  '// Parameter | pcWert     - Anschaffungswert
  '               pcRestwert - Restbuchungswert
  '               piDauer    - Nutzungsdauer
  '// -----------------------------------------------------
  '// Erstellt  | Stefan Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf im Direktfenster z.B.:
  '   GdaAfa 10000,0,12
  '// -----------------------------------------------------
 
  Dim iLoop As Integer
  Dim sMsg As String
  Dim sFormat As String
 
  Dim cAfa As Currency
  Dim cRest As Currency
  On Error GoTo GdaAfa_Err
 
  sFormat = "###,##0.00"
 
  ' Kopfzeile definieren
  sMsg = "Geometrisch-Degressive 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
 
  cRest = pcWert
 
  ' Schleife über die Nutzungsdauer
  For iLoop = 1 To piDauer
    ' Abschreibungsbetrag errechnen
    cAfa = DDB(pcWert, pcRestwert, piDauer, iLoop)
    ' 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
 
GdaAfa_Exit:
  On Error GoTo 0
  Exit Sub
 
GdaAfa_Err:
  MsgBox "Fehler " & Err.Number & ": " & _
         Err.Description, vbCritical, _
         "modFinancial.GdaAfa"
  Resume GdaAfa_Exit
 
End Sub
Das Ergebnis im Direktfenster
Geometrisch-Degressive Afa
------------------------------
Anschaffungswert: 10.000,00
Nutzungsdauer:    12 Jahre
------------------------------
Jahr       Afa      Rest
   1  1.666,67  8.333,33
   2  1.388,89  6.944,44
   3  1.157,41  5.787,04
   4    964,51  4.822,53
   5    803,76  4.018,78
   6    669,80  3.348,98
   7    558,16  2.790,82
   8    465,14  2.325,68
   9    387,61  1.938,07
  10    323,01  1.615,06
  11    269,18  1.345,88
  12    224,31  1.121,57

ExpertentippTipp: Die degressive Abschreibung lohnt sich erst bei einer Nutzungsdauer von über 5 Jahren.