Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Aufruf

VBA Aufruf
Gert
Hallo User,
von VBA habe ich bisher leider keine große Ahnung.
Ich würde der nachfolgenden Code nutzen, mit ein paar Änderungen.
In einem Tabellenblatt habe ich in der Spalte A mehrere Einkommen stehen.
In Spalte B sollte nun die Steuer aus der Grundtabelle stehen.
In Spalte C sollte nun die Steuer aus der Splittingtabelle stehen.
Folgender Inhalt steht in A1
50.000
In B1 soll 12.847 und in C1 8.212 stehen.
Wie kann ich die Funktion aufrufen in B1, etwa mit = testest(a1)?
Der VBA sollte so gestaltet sein, dass ich ihn universal einsetzen kann.
MSG-Boxen sollen NICHT erscheinen.
Wer kann mir hier helfen?
Danke vorab
gruß
Gert
Option Explicit
'Einkommensteuertarif gem. § 32a für 2009 Public Function est(ByVal zuVerstEinkommen As Double, splitting As Boolean) Dim x As Double, y As Double, z As Double If splitting Then zuVerstEinkommen = zuVerstEinkommen / 2 Select Case zuVerstEinkommen Case 0 To 7834 est = 0 Case 7835 To 13139 y = Int(zuVerstEinkommen - 7834) / 10000 est = Int((939.68 * y + 1400) * y) Case 13140 To 52151 z = Int(zuVerstEinkommen - 13139) / 10000 est = Int((228.74 * z + 2397) * z + 1007) Case 52152 To 250401 x = Int(zuVerstEinkommen) est = Int(0.42 * x - 8064) Case Is >= 250401 x = Int(zuVerstEinkommen) est = Int(0.45 * x - 15576) End Select If splitting Then est = est * 2 End Function 'Funktionsaufruf
Sub testEST()
Dim stpflEinkommen As Long
stpflEinkommen = InputBox("Eingabe des zu versteuernden Einkommens", "Einkommen", 50000)
MsgBox "Steuerpfl. Einkommen: " & Format(stpflEinkommen, "#,###,##0") & vbLf & vbLf _
& "Tarif nach Grundtabelle " & Format(est(stpflEinkommen, False), "#,###,##0") & vbLf _
& "Tarif nach Splittingtabelle " & Format(est(stpflEinkommen, True), "#,###,##0"), _
vbInformation, "EST-Tarif nach § 32a"
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Aufruf
26.08.2012 11:10:31
Hajo_Zi
mit deiner Funktion rechnest Du die Einkommensteuere aus falls Splitting vorhanden, interpretiere ich mal.
Die rechnet aberv andere Werte aus.
Tabelle1
 ABC
150.0008.3428.212

verwendete Formeln
Zelle Formel Bereich
B1 =est(A1;C1) 

Tabellendarstellung in Foren Version 5.49


Für Splitting fehlt die Funktion.

Anzeige
AW: VBA Aufruf
26.08.2012 11:16:41
Josef

Hallo Gerd,
gib deiner Funktion einen Rückgabewert und du kannst sie direkt aus der Tabelle aufrufen.
Tabelle1

 ABCD
1        50.000,00 €        12.950,00 €         8.342,00 €  
2        37.500,00 €         8.203,00 €         4.846,00 €  
3        16.500,00 €         1.838,00 €            118,00 €  
4         7.500,00 €                   -   €                   -   €  
5    
6    

Formeln der Tabelle
ZelleFormel
B1=est(A1)
C1=est(A1;1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Und der Code in einem allgemeinen Modul.
Public Function est(zuVerstEinkommen As Variant, Optional splitting As Boolean = False) As Variant
  Dim x As Double
  
  On Error GoTo ErrExit
  
  If splitting Then zuVerstEinkommen = zuVerstEinkommen / 2
  
  Select Case zuVerstEinkommen
    Case 0 To 7834
      est = 0
    Case 7835 To 13139
      x = Int(zuVerstEinkommen - 7834) / 10000
      est = Int((939.68 * x + 1400) * x)
    Case 13140 To 52151
      x = Int(zuVerstEinkommen - 13139) / 10000
      est = Int((228.74 * x + 2397) * x + 1007)
    Case 52152 To 250401
      x = Int(zuVerstEinkommen)
      est = Int(0.42 * x - 8064)
    Case Is >= 250401
      x = Int(zuVerstEinkommen)
      est = Int(0.45 * x - 15576)
  End Select
  
  If splitting Then est = est * 2
  
  Exit Function
  ErrExit:
  est = CVErr(xlErrValue)
End Function




« Gruß Sepp »

Anzeige
AW: VBA Aufruf
26.08.2012 15:22:20
Gert
Hallo Sepp,
vielen Dank für Deinen Tipp.
beim eingeben der Formel in B1 "est(a1) erhalte ich den Fehler #name?
Deinen Code habe ich bei "Allgemein" eingetragen.
Was mache ich falsch?
gruß
gert

AW: VBA Aufruf
26.08.2012 15:41:57
Josef

Hallo Gert,
"was mache ich falsch?"
Von hier aus schwer zu beurteilen. Lade die Mappe hoch.

« Gruß Sepp »

Anzeige
AW: VBA Aufruf
26.08.2012 17:16:32
Josef

Hallo Gert,
wenn du den Code in ein allgemeines Modul (einfügen > Modul) einfügst, so wie ich es ja bereits geschrieben hatte und nicht in das Klassenmodul der Tabelle, dann funktioniert die UDF.
Und wenn du dann in C2 A1 gegen A2 tauschst, dann ist alles gut.

« Gruß Sepp »

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige