Clever-Excel-Forum

Normale Version: Zahlen in Wort (Bsp. 862 --> achthundertzweiundsechzig)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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  Huh 

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
Hallo,

vielen Dank für das Beispiel.

Gruß Uwe
Hallo,

(21.02.2023, 14:36)Driver schrieb: [ -> ]Anbei ist auch der Code, aber er funktioniert nicht  Huh 
Wäre vielleicht nicht schlecht, wenn Du auch sagen könntest was nicht funktioniert und wie sich das bemerkbar macht.

Es fehlen übrigens zwei end if am Ende (vor End sub), vielleicht ist es ja schon das Problem ... vielleicht war es auch ein Copy-Paste-fehler und eben nicht der Fehler ...

EDIT: Eine Frage noch: Hast Du den Code selber geschrieben? Wenn nein, woher stammt der Code?
herber.de/excelformeln/pages/Zahlen_bis_999999999_in_Buchstaben_ausschreiben.html (Formeln, mehrsprachig, kein VBA)

byedesign.co.uk/SCEHelp.htmmp/Temp1_SCEHelp.zip/SCEHelp.htm als XL4-Makro-Code, englisch (ganz am Ende der Hilfedatei, ca. drittletzte Bildschirmseite)
Auf die Schnelle auch noch gefunden:
https://www.excel-inside.de/beispiele_vb...-umwandeln