forum.chip.de/office/excel-zahlen-woerter-umwandeln-68427.html
Excel: Zahlen in Wörter umwandeln
--------------------------------------------------------------------------------
Ich hab jetzt die Lösung selber gefunden. Trotzdem vielen Dank.
Falls es sonst noch jemand braucht hier das VB-Scribt:
Option Explicit
'XL5/7/8-Makros von Hans W. Herber wie folgt Aufruf:
'=ZWORT(Zahl|Bezug]
Dim i%
Function ZWort(Zahl As Double) As String
Dim Teil1$, ATeil$, BTeil$, Rest$
If Fix(Zahl) = 0 Then
If Zahl = 0 Then
ZWort = "null"
Exit Function
Else
ZWort = Format((Zahl - Fix(Zahl)) * 100, "00") & "/100"
Exit Function
End If
End If
If Zahl = Fix(Zahl) Then
Rest = ""
Else
Rest = " " & Format((Zahl - Fix(Zahl)) * 100, "00") & "/100"
End If
If Zahl = 0 Then ZWort = "null": Exit Function
Zahl = Fix(Zahl)
If Zahl = 1 Then ZWort = "eins" & Rest: Exit Function
i = 0
ATeil = Right(Zahl, 3)
ZWort = Hunderter(ATeil)
If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)
If ZWort > "" Then ZWort = ZWort & "tausend"
ZWort = ZWort & Teil1
If Right(ATeil, 3) = 1 Then ZWort = ZWort & "s"
If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)
If BTeil = "1" Then
ZWort = "eine" & "million" & Teil1
Else
If ZWort > "" Then ZWort = ZWort & "millionen"
ZWort = ZWort & Teil1
End If
If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)
If BTeil = "1" Then
ZWort = "eine" & "milliarde" & Teil1
Else
ZWort = ZWort & "milliarden" & Teil1
End If
Beenden:
ZWort = ZWort & Rest
End Function
Private Function Hunderter(Hteil)
Dim eZahl%, Ziffer1$, Ziffer2$, Ziffer3$
eZahl = Right(Hteil, 1)
Hunderter = Einer(eZahl)
Ziffer3 = Hunderter
If Hteil < 10 Then Exit Function
eZahl = Right(Hteil, 2)
If Right(Hteil, 2) < 20 Then
Hunderter = Zehner(eZahl)
Ziffer1 = Hunderter
If Len(Str(Hteil)) < 4 Then Exit Function
End If
eZahl = Mid(Hteil, Len(Hteil) - 1, 1)
If Hunderter <> "" Then
Hunderter = Hunderter & "und" & Zehner1(eZahl)
Else
Hunderter = Zehner1(eZahl)
Ziffer1 = Hunderter
End If
If Hteil < 100 Then Exit Function
eZahl = Mid(Hteil, Len(Hteil) - 2, 1)
eZahl = Mid(Hteil, Len(Str(Hteil)) - 3, 1)
If Right(Hteil, 2) < 10 Then
If Mid(Hteil, 2, 1) = 0 And Right(Hteil, 1) = 1 Then
Hunderter = Einer(eZahl) & "hunderteins"
Else
Hunderter = Einer(eZahl) & "hundert" & Ziffer3
End If
ElseIf Right(Hteil, 2) > 9 And Right(Hteil, 2) < 20 Then
Hunderter = Einer(eZahl) & "hundert" & Ziffer1
Else
Hunderter = Einer(eZahl) & "hundert" & Hunderter
End If
End Function
Private Function Einer(EinerZahl)
Select Case EinerZahl
Case Is = 1
Einer = "ein"
Case Is = 2
Einer = "zwei"
Case Is = 3
Einer = "drei"
Case Is = 4
Einer = "vier"
Case Is = 5
Einer = "fünf"
Case Is = 6
Einer = "sechs"
Case Is = 7
Einer = "sieben"
Case Is = 8
Einer = "acht"
Case Is = 9
Einer = "neun"
End Select
End Function
Private Function Zehner(ZehnerZahl)
Select Case ZehnerZahl
Case Is = 10
Zehner = "zehn"
Case Is = 11
Zehner = "elf"
Case Is = 12
Zehner = "zwölf"
Case Is = 13
Zehner = "dreizehn"
Case Is = 14
Zehner = "vierzehn"
Case Is = 15
Zehner = "fünfzehn"
Case Is = 16
Zehner = "sechzehn"
Case Is = 17
Zehner = "siebzehn"
Case Is = 18
Zehner = "achtzehn"
Case Is = 19
Zehner = "neunzehn"
End Select
End Function
Private Function Zehner1(ZehnerZahl)
Select Case ZehnerZahl
Case Is = 2
Zehner1 = "zwanzig"
Case Is = 3
Zehner1 = "dreißig"
Case Is = 4
Zehner1 = "vierzig"
Case Is = 5
Zehner1 = "fünfzig"
Case Is = 6
Zehner1 = "sechzig"
Case Is = 7
Zehner1 = "siebzig"
Case Is = 8
Zehner1 = "achtzig"
Case Is = 9
Zehner1 = "neunzig"
End Select
End Function