VBA Betrag in Worten
Und jetzt noch kniffeliger: Der numerische Spendenbetrag muss
auch leider zwingend ausgeschrieben (speich EUR 815,00 =
Achthundertfünfzig) werden. Geht so etwas?
Hallo Sven,
vielleicht ist das einfacher zu benutzen. Du mußt dann nur in einer Beliebigen Zelle in einem Blatt deiner Mappe schreiben:
=ZahlWorte(D5)
Der Code geht von -99.999.999.999,99 bis +99.999.999.999,99,
Wenn ihr größere Spenden habt meld dich nochmal
)
Dazu mußt du eionmalig den Code in die Mappe einfügen.
Alt+F11, Einfügen–Modul, Code reinkopieren, Vb-Editor schließen.
Gruß
Reinhard
Option Explicit
Function ZahlWorte(Zelle As Range) As String
Dim S() As String
S = Split(Round(Zelle.Value, 2), ",")
ZahlWorte = BetragInWorten(S(0))
If UBound(S) = 1 Then
ZahlWorte = ZahlWorte & " Komma " & BetragInWorten(S(1))
If Left(S(1), 1) = "0" Then ZahlWorte = Replace(ZahlWorte, "Komma ", "Komma null")
End If
If Zelle.Value "000" Then
If I 4 Then
If Gruppe = "001" Then
Grp(I) = tmp1(I)
Else
Grp(I) = GetGruppe(Gruppe) + tmp2(I)
End If
Else
Grp(I) = GetGruppe(Gruppe)
End If
End If
Next I
BetragInWorten = Grp(1) + Grp(2) + Grp(3) + Grp(4)
End If
End Function
Private Function GetGruppe(ByVal Gruppe As String) As String
Dim Hunderter As String
Dim Zehner As String
Dim Einer As String
If Val(Mid$(Gruppe, 1, 1)) \> 0 Then
If Mid$(Gruppe, 1, 1) = "1" Then
Hunderter = "einhundert"
Else
Hunderter = Choose(Val(Mid$(Gruppe, 1, 1)) + 1, "null", \_
"eins", "zwei", "drei", "vier", "fünf", "sechs", \_
"sieben", "acht", "neun") + "hundert"
End If
End If
If Val(Right$(Gruppe, 2)) \>= 10 And \_
Val(Right$(Gruppe, 2)) 1 Then
Zehner = Choose(Val(Mid$(Gruppe, 2, 1)) - 1, "zwanzig", \_
"dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", \_
"achtzig", "neunzig")
End If
If Val(Mid$(Gruppe, 3, 1)) \> 0 Then
If Zehner = "" Then
Einer = Choose(Val(Mid$(Gruppe, 3, 1)) + 1, "null", \_
"eins", "zwei", "drei", "vier", "fünf", "sechs", \_
"sieben", "acht", "neun")
Else
If Mid$(Gruppe, 3, 1) = "1" Then
Einer = "einund"
Else
Einer = Choose(Val(Mid$(Gruppe, 3, 1)) + 1, "null", \_
"eins", "zwei", "drei", "vier", "fünf", "sechs", \_
"sieben", "acht", "neun") + "und"
End If
End If
End If
End If
GetGruppe = Hunderter + Einer + Zehner
End Function