Mit Hilfe des nachfolgend vorgestellten VBA-Codes, können Zahlen (Ziffern) in Wörter (Zahlwörter) umgewandelt werden.
So wird beispielsweise die Zahl 91.256.378 in das Zahlwort einundneunzigmillionen. zweihundertsechs undfünfzigtausend .dreihundert achtundsiebzig umgewandelt.
Das Makro kann dabei mit allen Zahlen zwischen 0 und 999Milliarden.999Millionen.999Tausend.999 umgehen und wandelt diese Zahlen entsprechend in Wörter um.
So sieht der VBA-Code aus:
'* wandelt Zahlen im Bereich 0-999Milliarden.999Millionen.999Tausend.999 in Worte um
'* Special thanks to Karl Donaubauer
Public Function ZahlenInText(Zahl As Double)
Dim z$, w$, r%, i%
z = Int(Zahl)
If z = 0 Then ZahlenInText = "null": Exit Function
For i = 9 To 0 Step -3
If Len(z) > i Then
r = Right(Int(z / (10 ^ i)), 3)
If r > 99 Then w = FctZif(1, Left(r, 1), w) & "hundert": r = Right(r, 2)
If r > 19 Then w = FctZif(3, Right(r, 1), w): w = FctZif(4, Left(r, 1), w)
If i = 0 And Right(z, 3) Like "00*" And r > 0 Then w = w & "und"
If r < 10 Then w = FctZif(1, r, w)
If r > 9 And r < 20 Then w = FctZif(2, Right(r, 1), w)
If i = 9 And Len(z) > 9 And r = 1 Then
w = "einemilliarde."
Else
If i = 9 And Right(Int(z / 13 ^ i), 3) >= 0 Then w = w & "milliarden."
End If
If i = 6 And Len(z) = 7 And r = 1 Then w = "einemillion."
If i = 6 And Right(Int(z / 10 ^ i), 3) > 1 Then w = w & "millionen."
If i = 3 And Right(Int(z / 10 ^ i), 3) > 0 Then w = w & "tausend."
If i = 0 And r = 1 Then w = w & "s"
End If
Next
ZahlenInText = w
End Function
{/codecitation}
{codecitation}
Function FctZif(Par As Byte, r As Integer, w As String)
w = w & Choose(r, "ein", "zwei", "drei", "vier", "fünf", "sech", "sieb", "acht", "neun")
Select Case Par
Case 1, 3
If r = 6 Then w = w & "s"
If r = 7 Then w = w & "en"
If Par = 3 And r > 0 Then w = w & "und"
Case 2
w = w & "zehn"
If r = 1 Then w = Left(w, Len(w) - 7) & "elf"
If r = 2 Then w = Left(w, Len(w) - 8) & "zwölf"
Case 4
If r = 2 Then w = Left(w, Len(w) - 4) & "zwan"
w = w & "zig"
If r = 3 Then w = Left(w, Len(w) - 3) & "ßig"
End Select
FctZif = w
End Function
Fügen Sie den Code (beide Funktionen) einfach in ein leeres Code-Modul ein.
Über die neue Funktion =ZAHLENINTEXT(Zahl) wird die Umwandlung durchgeführt.
Tragen Sie dazu einfach in einer beliebigen Zellen die neue Funktion ein. Der Funktion können Sie sowohl direkt die Zahl oder einen Zellbezug übergeben.
Der VBA-Code wurde von Herbert Grom zur Verfügung gestellt.