AW: Zelle per VBA berechnen
23.05.2019 10:23:48
Onkel
Ich brauch nochmal Deine fachmännische Antwort. Wie kann ich die Formel berechnen und in einer Zelle anzeigen?
Sub Berechnung()
ActiveWorkbook.Names.Add Name:="PN", RefersToR1C1:="=Daten!R7C4" 'PN = Personalnummer
ActiveWorkbook.Names.Add Name:="Vorname", RefersToR1C1:="=Daten!R79C4"
ActiveWorkbook.Names.Add Name:="Name", RefersToR1C1:="=Daten!R11C4"
ActiveWorkbook.Names.Add Name:="Geburtsdatum", RefersToR1C1:="=Daten!R13C4"
ActiveWorkbook.Names.Add Name:="Anrede", RefersToR1C1:="=Daten!R15C4"
ActiveWorkbook.Names.Add Name:="Straße", RefersToR1C1:="=Daten!R17C4"
ActiveWorkbook.Names.Add Name:="PLZ", RefersToR1C1:="=Daten!R19C4"
ActiveWorkbook.Names.Add Name:="Ort", RefersToR1C1:="=Daten!R21C4"
ActiveWorkbook.Names.Add Name:="Bundesland", RefersToR1C1:="=Daten!R23C4"
ActiveWorkbook.Names.Add Name:="Lohnjahr", RefersToR1C1:="=Daten!R25C4"
ActiveWorkbook.Names.Add Name:="Lohnmonat", RefersToR1C1:="=Daten!R27C4"
ActiveWorkbook.Names.Add Name:="Gleitzone", RefersToR1C1:="=Daten!R29C4"
ActiveWorkbook.Names.Add Name:="Kinder", RefersToR1C1:="=Daten!R31C4"
ActiveWorkbook.Names.Add Name:="Firmeneintritt", RefersToR1C1:="=Daten!R33C4"
ActiveWorkbook.Names.Add Name:="Kirche", RefersToR1C1:="=Daten!R35C4"
ActiveWorkbook.Names.Add Name:="Freibeträge", RefersToR1C1:="=Daten!R37C4"
ActiveWorkbook.Names.Add Name:="Steuerklasse", RefersToR1C1:="=Daten!R39C4"
ActiveWorkbook.Names.Add Name:="ÖffentlDienst", RefersToR1C1:="=Daten!R41C4"
ActiveWorkbook.Names.Add Name:="Grundgehalt", RefersToR1C1:="=Daten!R7C8"
ActiveWorkbook.Names.Add Name:="F", RefersToR1C1:="=Daten!R9C8" 'Gleizonenfaktor
ActiveWorkbook.Names.Add Name:="GZEG", RefersToR1C1:="=Daten!R11C8" 'Gleitzonenentgeld
ActiveWorkbook.Names.Add Name:="AG_SVBrutto", RefersToR1C1:="=Daten!R11C9" 'Arbeitgeber SV- _
Brutto
ActiveWorkbook.Names.Add Name:="UG", RefersToR1C1:="=Daten!R13C8" 'Untere Gleitzone
ActiveWorkbook.Names.Add Name:="OG", RefersToR1C1:="=Daten!R15C8" 'Obere Gleitzone
ActiveWorkbook.Names.Add Name:="BSKV", RefersToR1C1:="=Daten!R20C8" 'Beitragssatz _
Krankenversicherung
ActiveWorkbook.Names.Add Name:="BSZusatz", RefersToR1C1:="=Daten!R22C8" 'Beitragssatz _
Zusatzversicherung
ActiveWorkbook.Names.Add Name:="BSRV", RefersToR1C1:="=Daten!R24C8" 'Beitragssatz _
Rentenversicherung
ActiveWorkbook.Names.Add Name:="BSPV", RefersToR1C1:="=Daten!R26C8" 'Beitragssatz _
Pflegepflicht
ActiveWorkbook.Names.Add Name:="BSAL", RefersToR1C1:="=Daten!R28C8" 'Beitragssatz _
Arbeitslosenversicherung
ActiveWorkbook.Names.Add Name:="BSInsolvenz", RefersToR1C1:="=Daten!R30C8" 'Beitragssatz _
Insolvenz
ActiveWorkbook.Names.Add Name:="BSU1", RefersToR1C1:="=Daten!R32C8" 'Beitragssatz Umlage U1 _
Krankheit
ActiveWorkbook.Names.Add Name:="BSU2", RefersToR1C1:="=Daten!R34C8" 'Beitragssatz Umlage U2 _
Schwangerschaft
ActiveWorkbook.Names.Add Name:="SachSVfrei", RefersToR1C1:="=Daten!R37C8" 'Sachwert SV-frei
ActiveWorkbook.Names.Add Name:="Ergebnis", RefersToR1C1:="=Daten!R44C8"
Dim UG, OG, F, Ergebnis, AG_SVBrutto, GZEG As Double
Dim Vorname, Name, Anrede, Straße, Ort, Bundesland As String
Dim ÖffentlDienst, Kirche, Gleitzone, Kinder As Boolean
Dim Geburtsdatum, Firmeneintritt As Date
Range("Ergebnis").Formula = F * UG + ((OG / (OG - UG)) - (UG / (OG - UG)) * F) * ( _
AG_SVBrutto - UG) 'Fehler Überlauf
ActiveCell.FormulaR1C1 = "= F * UG + ((OG / (OG - UG)) - (UG / (OG - UG)) * F) * ( _
AG_SVBrutto - UG)" 'Schreibt Formel in Zelle und die Zelle muß aktiviert werden
Range("Ergebnis") = (Range("F") * Range("UG")) + ((Range("OG") / (Range("OG") - Range("UG")) _
) - (Range("UG") / (Range("OG") - Range("UG"))) * Range("F")) * (Range("AG_SVBrutto") - Range("UG")) 'Geht, aber Formel erscheint mir unmöglich
End Sub
Die erste Berechnung bringt einen Fehler (Überlauf), die zweite muss die Zelle aktiviert werden und die dritte finde ich unmöglich.
Was ist der bessere Befehl?
VG Uli