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!
 
   'Quelle: http://www.dbwiki.net/
 
 
   Dim Steuereinkommen As Long
   Dim y               As Double
   Dim z               As Double
 
   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