AW: Zahlen als Text
03.01.2006 09:56:05
Harald
Hi Robbie,
hier ein Lösungsvorschlag aus meinem Fundus.
Den Code in ein Standardmodul. Die Funktion =ISTWORT() steht dann unter benutzerdefinierten Funktionen zur Verfügung.
Function ISTWORT(dblZahl As Double) As String
Dim intRest As Integer, intCnt As Integer
Dim arr1 As Variant, arr2 As Variant, arr3 As Variant
Dim str As String, str1 As String, strBack As String, strRest As String
If dblZahl = 0 Then TextZahl = "null": Exit Function
intRest = Abs(dblZahl - Fix(dblZahl)) * 100
If intRest > 0 Then strRest = " " & Format(intRest, "00") & "/100"
arr1 = Array("", "tausend", "million", "milliarde", "billion")
arr2 = Array("s", "", "e", "e", "e")
arr3 = Array("", "", "en", "n", "en")
str = Right(Space(15) & Fix(dblZahl), 15)
For intCnt = 4 To 0 Step -1
str1 = Mid(str, 13 - (intCnt * 3), 3)
If Val(str1) 0 Then
If Val(Left(str1, 1)) 0 Then
strBack = strBack & TextZahl1(Left(str1, 1)) & "hundert"
End If
strBack = strBack & TextZahl3(Right(str1, 2), _
arr2(intCnt)) & arr1(intCnt)
If Val(str1) 1 Then strBack = strBack & arr3(intCnt)
End If
Next intCnt
ISTWORT = strBack & strRest
End Function
Private Function TextZahl1(intZahl As Integer) As String
TextZahl1 = Array("", "ein", "zwei", "drei", "vier", "fünf", _
"sechs", "sieben", "acht", "neun")(intZahl)
End Function
Private Function TextZahl2(intZahl As Integer) As String
TextZahl2 = Array("", "", "zwanzig", "dreissig", "vierzig", "fünfzig", _
"sechszig", "siebzig", "achtzig", "neunzig")(intZahl)
End Function
Private Function TextZahl3(intZahl As Integer, ByVal strAdd As String) As String
Dim str As String
If intZahl < 20 Then
If intZahl > 9 Then
str = Array("zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", _
"sechszehn", "siebzehn", "achtzehn", "neunzehn")(intZahl - 10)
Else
str = TextZahl1(intZahl)
If intZahl = 1 Then str = str & strAdd
End If
Else
str = TextZahl1(Right(intZahl, 1))
If str <> "" Then str = str & "und"
str = str & TextZahl2(Left(intZahl, 1))
End If
TextZahl3 = str
End Function
Gruss Harald