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:
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 Dieser Tipp wurde bereits 6.100 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |