21.02.2023, 14:36
Hi folks,
ich würde gerne ein VBA schreiben, das mir Zahlen in Wort umwandelt. als Beispiel: 862 steht in Zelle A1 --> Aufruf von Methode ZahlenInText(A1) steht in Zelle B1 --> In B1 soll erscheinen achthundertzweiundsechzig
Anbei ist auch der Code, aber er funktioniert nicht
Muss nicht unbedingt nbis Millionen gehen. Würde bis 100 Tausend erstmal reichen :)
LG
ich würde gerne ein VBA schreiben, das mir Zahlen in Wort umwandelt. als Beispiel: 862 steht in Zelle A1 --> Aufruf von Methode ZahlenInText(A1) steht in Zelle B1 --> In B1 soll erscheinen achthundertzweiundsechzig
Anbei ist auch der Code, aber er funktioniert nicht
![Huh Huh](https://www.clever-excel-forum.de/images/smilies/huh.gif)
Muss nicht unbedingt nbis Millionen gehen. Würde bis 100 Tausend erstmal reichen :)
LG
Code:
Public Function ZahlenInText(Zahl As Double) As String
Dim wort As String
Dim einheit() As String
Dim zehner() As String
Dim hunderter() As String
Dim tausender() As String
Dim millionen() As String
einheit = Split("Null,Eins,Zwei,Drei,Vier,Fünf,Sechs,Sieben,Acht,Neun", ",")
zehner = Split("Zehn,Elf,Zwölf,Dreizehn,Vierzehn,Fünfzehn,Sechzehn,Siebzehn,Achtzehn,Neunzehn", ",")
hunderter = Split("Null,Hundert,Zweihundert,Dreihundert,Vierhundert,Fünfhundert,Sechshundert,Siebenhundert,Achthundert,Neunhundert", ",")
tausender = Split("Null,Tausend,Eintausend,Zweitausend,Dreitausend,Viertausend,Fünftausend,Sechstausend,Siebentausend,Achttausend,Neuntausend", ",")
millionen = Split("Null,Millionen,Eine Million,Zwei Millionen,Drei Millionen,Vier Millionen,Fünf Millionen,Sechs Millionen,Sieben Millionen,Acht Millionen,Neun Millionen", ",")
If Zahl = 0 Then
ZahlenInText = "Null"
ElseIf Zahl < 0 Then
ZahlenInText = "Minus " & ZahlenInText(Abs(Zahl))
ElseIf Zahl <= 9 Then
ZahlenInText = einheit(Zahl + 1)
ElseIf Zahl <= 19 Then
ZahlenInText = zehner(Zahl - 9)
ElseIf Zahl <= 99 Then
wort = hunderter(Int(Zahl / 100) + 1)
If Zahl Mod 100 > 0 Then
wort = wort & "und" & ZahlenInText(Zahl Mod 100)
End If
ZahlenInText = wort
ElseIf Zahl <= 999 Then
wort = ZahlenInText(Int(Zahl / 100)) & "hundert"
If Zahl Mod 100 > 0 Then
wort = wort & ZahlenInText(Zahl Mod 100)
End If
ZahlenInText = wort
ElseIf Zahl <= 9999 Then
wort = tausender(Int(Zahl / 1000) + 1)
If Zahl Mod 1000 > 0 Then
wort = wort & ZahlenInText(Zahl Mod 1000)
End If
ZahlenInText = wort
ElseIf Zahl <= 999999 Then
wort = ZahlenInText(Int(Zahl / 1000)) & "tausend"
If Zahl Mod 1000 > 0 Then
wort = wort & ZahlenInText(Zahl Mod 1000)
End If
ZahlenInText = wort
ElseIf Zahl <= 9999999 Then
wort = millionen(Int(Zahl / 1000000) + 1)
If Zahl Mod 1000000 > 0 Then
End Function