Schau mal in den amtlichen Programmablaufplan, ich finde, der sieht ziemlich ähnlich zu dem aus, was ich vorgeschlagen habe (auch wenn hier die Jahreswerte berechnet werden):
Einschub
Ich bin auf diese Seite gestoßen. Ich habe dort meine Daten eingegeben, ABER … ich bin verbeamtet, aber gesetzlich versichert, und trage die Krankenversicherung selbst zu 100 % (danke, Niedersachsen!). Wenn ich dort das so eintrage, wie es ist, bei Krankenversicherung „gesetzlich“, dann kommt ein Solizuschlag von knapp über 1. Wenn ich „privat ohne AG-Zuschuss“ auswähle und bei „monatlicher Beitrag zur privaten KV/PV“ nichts eingebe, kommt genau der Betrag, der auf meiner Abrechnung steht. Wenn ich bei dem monatlichen Beitrag den tatsächlichen Beitrag ist (wobei das ja gesetzlich und nicht privat ist), dann ist der Soli mit 0,00 angegeben. Ich sagte schon, der Knopf ist doof!
So, trotzdem möchte ich mein Programm fertig machen.
Danke, war gut, dass du auch die PDF-Datei verlinkt hast, denn der PAP war teilweise etwas unscharf, außerdem stehen in der PDF-Datei auch die Bedeutungen der Abkürzungen. Aber so ganz schlau werde ich noch nicht daraus. Im Prinzip müsste ich diesen Teil implementieren:
und dabei kann ich gleich den UPANTEIL gemäß der nächsten Seite berücksichtigen (LZZ=2), deshalb ANTEIL1=JW/12.
JBMG wäre in meinem Fall (Monatsabrechnung) die LSt, richtig? Und SOLZFREI wäre 2826 bei Steuerklasse 3 und 1413 bei den anderen Steuerklassen? Oder worauf bezieht sich das?
So implementiert komme ich zumindest der Zahl auf meinem Zettel ziemlich nah (kleiner Unterschied im Centbereich), aber ich habe auch keine Vergleichswerte, um zu sehen, ob das mit anderen Zahlen auch klappt.
Mist, Bilder gehen wieder nicht.
Oh, jetzt zwischendurch doch:
Trotzdem auch die textuelle Beschreibung:
Also, in der Excel-Tabelle wird in der Zelle B3 die Steuerklasse eingegeben (1, 2, 3, 4, 5 oder 6), in B4 die einbehaltene Lohnsteuer, und beim Ausführen wird in B6 der berechnete Solizuschlag ausgegeben.
Mag sein, es geht schöner, mit VBA habe ich so gut wie nichts gemacht, das da unten habe ich mithilfe dieser Seite gebastelt. Aber kommt das gleiche raus wie bei meinem C#-Programm. Woher die Ungenauigkeit im Centbereich (bei meinen Werten 6 Cent) kommt, weiß ich allerdings nicht.
Option Explicit
Option Base 1
Function SoliBerechnen() As Double
Dim SOLZJ As Double
Dim JBMG As Double
Dim SOLZMIN As Double
Dim SOLZFREI As Double
Dim SOLZLZZ As Double
Dim JW As Double
Dim Steuerklasse As Integer
Steuerklasse = Tabelle1.Cells(3, "B")
If Steuerklasse = 3 Then
SOLZFREI = 2826
Else
SOLZFREI = 1413
End If
JBMG = Tabelle1.Cells(4, "B")
SOLZJ = JBMG * 5.5 / 100
SOLZMIN = (JBMG - SOLZFREI / 12) * 11.9 / 100
If SOLZMIN > SOLZJ Then
SOLZJ = SOLZMIN
End If
JW = SOLZJ * 100
SOLZLZZ = JW / 12 / 100
Tabelle1.Cells(6, "B") = SOLZLZZ
End Function
Sie weiß das nicht, die Sachbearbeiterin kann nur das Programm bedienen. Da muss ich wohl oder übel die Steuererklärung machen (das hätte ich sowieso gemacht) und dann geduldig auf den Steuerbescheid warten …
Möglicherweise weil das Abrunden auf 0 Cent im ersten Schritt bei der Monatslohnabrechnung nicht passiert?
Hmm, ich weiß gerade nicht, welche Stelle du genau meinst. Monatslohn gebe ich ja gar nicht an, nur Steuerklasse und Lohnsteuer.