Zahlen in Wort (Bsp. 862 --> achthundertzweiundsechzig)
#1
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
Antworten Top
#2
Hallo,

vielen Dank für das Beispiel.

Gruß Uwe
Antworten Top
#3
Hallo,

(21.02.2023, 15: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?
Gruß
Michael
Antworten Top
#4
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)
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#5
Hi,

auch hier im Forum:

https://www.clever-excel-forum.de/Thread...n-in-Worte
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
Auf die Schnelle auch noch gefunden:
https://www.excel-inside.de/beispiele_vb...-umwandeln
Gruß
Michael
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste