VBA Tipp: Einkommensteuer berechnen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte die (deutsche) Einkommensteuer berechnen.

Lösung

Für die Jahre von 1999 bis 2002 leistet das die folgende Funktion:

Public Function Einkommensteuer( _
  ByVal Jahr As Long, ByVal Einkommen As Currency) As Currency
'
' bis 2001 in DM, ab 2002 in EUR!
'
Dim y As Double, z As Double, Steuereinkommen As Long
 
  Einkommensteuer = 0
  Select Case Jahr
  Case 1999
    Steuereinkommen = ((Einkommen \ 54) * 54) + 27
    If Steuereinkommen < 13068 Then
      Einkommensteuer = 0
    ElseIf Steuereinkommen < 17064 Then
      y = (Steuereinkommen - 13014) / 10000
      Einkommensteuer = Fix(((350.35 * y) + 2390) * y)
    ElseIf Steuereinkommen < 66366 Then
      y = (Steuereinkommen - 17010) / 10000
      Einkommensteuer = Fix((((101.31 * y) + 2670) * y) + 1011)
    ElseIf Steuereinkommen < 120042 Then
      y = (Steuereinkommen - 66312) / 10000
      Einkommensteuer = Fix((((151.93 * y) + 3669) * y) + 16637)
    Else
      Einkommensteuer = Fix((0.53 * Steuereinkommen) - 22886)
    End If
 
  Case 2000
    Steuereinkommen = ((Einkommen \ 54) * 54) + 27
    If Steuereinkommen < 13500 Then
      Einkommensteuer = 0
    ElseIf Steuereinkommen < 17496 Then
      y = (Steuereinkommen - 13446) / 10000
      Einkommensteuer = Fix(((262.76 * y) + 2290) * y)
    ElseIf Steuereinkommen < 114696 Then
      z = (Steuereinkommen - 17442) / 10000
      Einkommensteuer = Fix((((133.74 * z) + 2500) * z) + 957)
    Else
      Einkommensteuer = Fix((0.51 * Steuereinkommen) - 20575)
    End If
 
  Case 2001
    Steuereinkommen = ((Einkommen \ 54) * 54) + 27
    If Steuereinkommen < 14094 Then
      Einkommensteuer = 0
    ElseIf Steuereinkommen < 18090 Then
      y = (Steuereinkommen - 14040) / 10000
      Einkommensteuer = Fix(((387.89 * y) + 1990) * y)
    ElseIf Steuereinkommen < 107568 Then
      z = (Steuereinkommen - 18036) / 10000
      Einkommensteuer = Fix((((142.49 * z) + 2300) * z) + 857)
    Else
      Einkommensteuer = Fix((0.485 * Steuereinkommen) - 19299)
    End If
 
  Case 2002, 2003
    Steuereinkommen = ((Einkommen \ 36) * 36) + 18
    If Steuereinkommen < 7236 Then
      Einkommensteuer = 0
    ElseIf Steuereinkommen < 9252 Then
      y = (Steuereinkommen - 7200) / 10000
      Einkommensteuer = Fix(((768.85 * y) + 1990) * y)
    ElseIf Steuereinkommen < 55008 Then
      z = (Steuereinkommen - 9216) / 10000
      Einkommensteuer = Fix((((278.65 * z) + 2300) * z) + 432)
    Else
      Einkommensteuer = Fix((0.485 * Steuereinkommen) - 9872)
    End If
 
  Case 2004
    Steuereinkommen = ((Einkommen \ 36) * 36) + 18
    If Steuereinkommen < 7665 Then
      Einkommensteuer = 0
    ElseIf Steuereinkommen < 12740 Then
      y = (Steuereinkommen - 7664) / 10000
      Einkommensteuer = Fix(((793.1 * y) + 1600) * y)
    ElseIf Steuereinkommen < 52152 Then
      z = (Steuereinkommen - 12739) / 10000
      Einkommensteuer = Fix((((265.78 * z) + 2405) * z) + 1016)
    Else
      Einkommensteuer = Fix((0.45 * Steuereinkommen) - 8845)
    End If
 
  End Select
End Function

Aufruf

Debug.Print Einkommensteuer(2002,123000)
 49780

Weblinks