Holger: Übersetzungsroutine

Beitrag lesen

Hallo zusammen,

habe mal in VB für Excel eine solche Funktion geschrieben, die der obigen Übersetzung stark ähnelt :)
Der Zehntausenderfehler ist dort an sich ausgebügelt, wenn es trotzdem irgendwo hakt meldet euch nochmal, Ihr müßt sie jetzt einfach nochmal übersetzen.

Function Zahlwort(zahl)
Dim a, b, c, hunderter(5) As String, zehner(5) As String, hilfezahl(3)
a = Array("null", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", _
"elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn")
b = Array("zehn", "zwanzig", "dreißzig", "vierzig", "fünfzig", "sechszig", "siebzig", "achtzig", "neunzig")
c = Array("null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun")
x = 1
y = 1

If zahl < 0 Then
vorzeichen = "minus"
zahl = Right(zahl, Len(zahl) - 1)
End If
If zahl Like "*,*" Then
komzahl = Right(zahl, Len(zahl) - InStr(zahl, ","))
For h = 1 To Len(komzahl)
nachkom = nachkom & c(Left(komzahl, 1))
komzahl = Right(komzahl, Len(komzahl) - 1)
Next h
komma = "komma"
zahl = Fix(zahl)
End If
If zahl = 0 Then
Zahlwort = vorzeichen & "null" & komma & nachkom
Exit Function
End If
If zahl = 1 Then
Zahlwort = vorzeichen & "eins" & komma & nachkom
Exit Function
End If
If zahl > 999 And zahl < 1000000 Then
tausend = "tausend"
hilfezahl(2) = Right(zahl, 3)
If hilfezahl(2) < 100 Then hilfezahl(2) = CInt(hilfezahl(2))
zahl = Left(zahl, Len(zahl) - 3)
x = 3
y = 2
End If
If zahl > 999999 Then
Millionen = "million"
hilfezahl(1) = Right(zahl, 6)
hilfezahl(2) = Right(zahl, 3)
If hilfezahl(2) < 100 Then hilfezahl(2) = CInt(hilfezahl(2))
zahl = Left(zahl, Len(zahl) - 6)
If zahl <> 1 Then Millionen = "millionen"
x = 3
End If

For i = y To x
If Len(zahl) > 3 Then
    zahl = Left(zahl, 3)
    If zahl < 100 Then zahl = CInt(zahl)
    If zahl <> 0 Then tausend = "tausend"
End If
If zahl > 99 And Right(zahl, 2) = 0 Then
    hunderter(i) = a(Left(zahl, 1)) & "hundert"
End If
If zahl > 99 Then
    hunderter(i) = a(Left(zahl, 1)) & "hundert"
    zahl = zahl - Left(zahl, 1) * 100
End If
If zahl < 100 And zahl > 19 And Right(zahl, 2) > 0 Then
    If Right(zahl, 1) = 0 Then
        zehner(i) = b(Left(zahl, 1) - 1)
    Else
        zehner(i) = "und" & b(Left(zahl, 1) - 1)
        zahl = zahl - Left(zahl, 1) * 10
    End If
End If
If zahl < 20 And zahl > 0 Then
    zehner(i) = a(zahl) & zehner(i)
End If
zahl = hilfezahl(i)

Next i

Zahlwort = vorzeichen & hunderter(1) & zehner(1) & Millionen & hunderter(2) & zehner(2) & tausend & hunderter(3) & zehner(3) & komma & nachkom
If komma <> "" Then
    If Right(Left(Zahlwort, InStr(Zahlwort, "k") - 1), 3) = "ein" Then Zahlwort = Left(Zahlwort, InStr(Zahlwort, "k") - 4) & "undeins" & Right(Zahlwort, Len(Zahlwort) - InStr(Zahlwort, "k") + 1)
ElseIf komma = "" Then
    If Right(Zahlwort, 3) = "ein" Then Zahlwort = Left(Zahlwort, Len(Zahlwort) - 3) & "undeins"
End If
If Right(Left(Zahlwort, 4 + Len(vorzeichen)), 4) = "einm" Then Zahlwort = vorzeichen & "einem" & Right(Zahlwort, Len(Zahlwort) - 4 - Len(vorzeichen))

End Function

Gruß
Holger