Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB6, VBA | 22.04.16 |
EKSt-Berechnung (bis 2015) Dieses Makro berechnet die Einkommensteuer anhand des zu versteuernden Einkommens (zvE), der Lohnersatzleistungen (LEL), des Jahres und der Tabelle (Grundtabelle = 1, Splittingtabelle = 2). | ||
Autor: Tobias König | Bewertung: | Views: 6.115 |
ohne Homepage | System: WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Dieses Makro berechnet die Einkommensteuer anhand des "zu versteuernden Einkommens" (zvE), der Lohnersatzleistungen (LEL), des Jahres und der Tabelle (Grundtabelle = 1, Splittingtabelle = 2).
Für weitere Jahre muss folgendes geändert werden:
- MaxJahr muss angepasst werden
- In den Arrays (G1 - G4, F1 - F9) müssen am ENDE die neuen Faktoren eingegeben werden. Anhand des Beispiels in der oberen Hälfte kann man erkennen, welcher G- und F-Wert für welchen tatsächlichen Wert steht.
Das Programm funktioniert, solange die komplette Berechnungsformel NICHT per Gesetz verändert wird
Function EST_BERECHNUNG(zvE As Double, LEL As Integer, Jahr As Integer, Ta As Byte) '(c) Tobias König, Dresden ' Berechnet die ESt ab 2005 (bis MaxJahr) ' Die in den Arrays gespeicherten Werte sind ebenfalls von 2005 aufsteigend gespeichert ' neue Jahre müssen entsprechend eingespeichert werden Dim A As Integer, B As Integer, C As Long, D As Long Dim E As Double, F As Integer, G As Double, H As Integer, I As Integer Dim J As Double, K As Double, L As Double, M As Double Dim y As Double, Z As Double Dim MaxJahr As Integer Dim Gesamteinkommen As Long Dim ESt As Double Dim StSatz As Double MaxJahr = 2015 ' max. Berechnung bis zum Jahr ... ' Fehlerprüfung If Ta < 1 Or Ta > 2 Then GoTo FehlerTabelle If Jahr < 2005 Or Jahr > MaxJahr Then GoTo FehlerJahr If zvE < 0 Or LEL < 0 Then GoTo FehlerEingabewert ' Bsp: Steuerformel 2010 ' 1. bis 8 004 Euro (Grundfreibetrag): 0 EUR ' 2. von 8 005 Euro bis 13 469 Euro: (912,17 • y + 1 400) • y; ' 3. von 13 470 Euro bis 52 881 Euro: (228,74 • z + 2 397) • z + 1 038; ' 4. von 52 882 Euro bis 250 730 Euro: 0,42 • x - 8 172; ' 5. von 250 731 Euro an: 0,45 • x - 15 694. ' Steuerformel mit Faktoren F1 - F9; G1 - G4 ' 1. bis G1 Euro (Grundfreibetrag): 0 EUR ' 2. von G1 + 1 Euro bis G2 Euro: (F1 • y + F4) • y; ' 3. von G2 + 1 Euro bis G3 Euro: (F2 • z + F3) • z + F5; ' 4. von G3 + 1 Euro bis G4 Euro: F8 • x - F6; ' 5. von G4 + 1 Euro an: F9 • x - F7. ' die 4 Grenzwerte zwischen den ESt-Stufen Dim G1 As Variant, G2 As Variant, G3 As Variant, G4 As Variant G1 = Array(7664, 7664, 7664, 7664, 7834, 8004, 8004, 8004, 8130, 8354, 8354) ' Grundfreibetrag G2 = Array(12739, 12739, 12739, 12739, 13139, 13469, 13469, 13469, 13469, 13469, 13469) G3 = Array(52151, 52151, 52151, 52151, 52551, 52881, 52881, 52881, 52881, 52881, 52881) G4 = Array(250000, 250000, 250000, 250000, 250400, 250730, 250730, 250730, 250730, 250730, 250730) ' Faktoren, welche bei der Berechnung benötigt werden ' weitere Jahre müssen entsprechend der "Steuerformel mit Faktoren" ergänzt werden Dim F1 As Variant, F2 As Variant, F3 As Variant, F4 As Variant, F5 As Variant Dim F6 As Variant, F7 As Variant, F8 As Variant, F9 As Variant F1 = Array(883.74, 883.74, 883.74, 883.74, 939.68, 912.17, 912.17, 912.17, 933.7, 974.58, 974.58) F2 = Array(228.74, 228.74, 228.74, 228.74, 228.74, 228.74, 228.74, 228.74, 228.74, 228.74, 228.74) F3 = Array(2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397) F4 = Array(1500, 1500, 1500, 1500, 1400, 1400, 1400, 1400, 1400, 1400, 1400) F5 = Array(989, 989, 989, 989, 1007, 1038, 1038, 1038, 1014, 971, 971) F6 = Array(7914, 7914, 7914, 7914, 8064, 8172, 8172, 8172, 8196, 8239, 8239) F7 = Array(7914, 7914, 15414, 15414, 15576, 15694, 15694, 15694, 15718, 15761, 15761) F8 = Array(0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42) F9 = Array(0.42, 0.42, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45, 0.45) ' Einlesen der Werte GesamtEinkommen = Int((zvE + LEL) / Ta) ' Festlegen der Grenzwerte und Faktoren für die eigentliche Berechnung ' Grenzwerte der einzelnen Stufen A = G1(Jahr - 2005): B = G2(Jahr - 2005): C = G3(Jahr - 2005): D = G4(Jahr - 2005) ' Faktoren etc. in der Berechnung E = F1(Jahr - 2005): F = F4(Jahr - 2005): G = F2(Jahr - 2005): H = F3(Jahr - 2005) I = F5(Jahr - 2005): J = F6(Jahr - 2005): K = F7(Jahr - 2005): L = F8(Jahr - 2005) M = F9(Jahr - 2005) ' eigentliche Berechnung If GesamtEinkommen <= A Then 'Stufe 1 Est = 0 ElseIf GesamtEinkommen > A And GesamtEinkommen <= B Then ' Stufe 2 y = (GesamtEinkommen - A) / 10000 Est = (E * y + F) * y ElseIf GesamtEinkommen > B And GesamtEinkommen <= C Then ' Stufe 3 Z = (GesamtEinkommen - B) / 10000 Est = Int((G * Z + H) * Z + I) ElseIf GesamtEinkommen > C And GesamtEinkommen <= D Then ' Stufe 4 Est = L * GesamtEinkommen - J Else ' Stufe 5 Est = M * GesamtEinkommen - K End If StSatz = Est * 100 / GesamtEinkommen ' Steuersatz EST_BERECHNUNG = Int(zvE * StSatz / 100) ' Ergebnis Exit Function ' Fehlerbehandlung FehlerTabelle: EST_BERECHNUNG = "#Steuertabelle falsch" Exit Function FehlerJahr: EST_BERECHNUNG = "#Jahr falsch" Exit Function FehlerEingabewert: EST_BERECHNUNG = "#zvE oder LEL falsch" End Function
Aufrufbeispiel:
' Einkommen: 30.000 ' Lohnersatzleistungen: 0 ' Jahr: 2015 ' Tabelle: 1 = Grundtabelle Dim EKSt As Variant EKSt = EST_BERECHNUNG(30000, 0, 2015, 1) If VarType(EKSt) = vbString Then ' Fehler MsgBox "Fehler: " & EKSt Else ' EKSt MsgBox "EKSt: " & FormatNumber(EKSt, 0, , , vbTrue) & " EUR" End If