Währungsbeträge in Worten

In WIN 7/97 suchte Rudolf Knust nach einer Möglichkeit, Beträge in Excel automatisch in Worten auszudrücken. Das ist mit einer benutzerdefinierten Funktion zu machen. Die Lösung von Manfred Prunner aus Bozen finden Sie unten als Listing abgedruckt, aber auch als ZAHLWORT.XLS auf der aktuellen Monats-CD oder in den WIN-Online-Foren. Einen Import in Excel 97 übersteht das Modul unbeschadet. Wolfgang Klein aus Eckental machte sich ebenfalls die Mühe: Sein Arbeitsblatt NOKOMMA.XLS funktioniert ähnlich, gibt aber die Stellen nach dem Komma nicht in Worten aus.

Dim i%

Funktion ZWort (Zahl Als Doppelt) Als ZeichenF
Dim Teil1$; ATeil$; BTeil$; ZahlWort$; Rest%

Wenn Zahl = Schneide (Zahl) Dann
Rest = 0
Sonst
Rest = Anwendung.Runden ((Zahl - Schneide (Zahl)) * 100; 0)
Ende Wenn

beginn:
Zahl = Schneide (Zahl)
Wenn Zahl = 1 Dann ZWort = ôeinsô: GeheZu Beenden
i = 0
ATeil = Rechts (Zahl; 3)
ZWort = Hunderter (ATeil)
Wenn Länge (ZnF (Zahl)) < 5 Dann GeheZu Beenden
Teil1 = ZWort
Zahl = Links (Zahl; Länge (ZnF (Zahl)) - 4)
BTeil = Rechts (Zahl; 3)
ZWort = Hunderter (BTeil)
Wenn ZWort > ôô Dann ZWort = ZWort & ôtausendô
ZWort = ZWort & Teil1
Wenn Rechts (ATeil; 3) = 1 Dann ZWort = ZWort & ôsô
Wenn Länge (ZnF (Zahl)) < 5 Dann GeheZu Beenden
Teil1 = ZWort
Zahl = Links (Zahl; Länge (ZnF (Zahl)) - 4)
BTeil = Rechts (Zahl; 3)
ZWort = Hunderter (BTeil)
Wenn BTeil = ô1ô Dann
ZWort = ôeineô & ômillionô & Teil1
Sonst
Wenn ZWort > ôô Dann ZWort = ZWort & ômillionenô
ZWort = ZWort & Teil1
Ende Wenn
Wenn Länge (ZnF (Zahl)) < 5 Dann GeheZu Beenden
Teil1 = ZWort
Zahl = Links (Zahl; Länge (ZnF (Zahl)) - 4)
BTeil = Rechts (Zahl; 3)
ZWort = Hunderter (BTeil)
Wenn BTeil = ô1ô Dann
ZWort = ôeineô & ômilliardeô & Teil1
Sonst
ZWort = ZWort & ômilliardenô & Teil1
Ende Wenn
Beenden:
Wenn Rest > 0 Dann
ZahlWort = ZWort & ôkommaô
Wenn Rest < 10 Dann ZahlWort = ZahlWort & ônull ô
Zahl = Rest
Rest = 0
GeheZu beginn
Ende Wenn

ZWort = ZahlWort & ZWort
Ende Funktion

Funktion Hunderter (Hteil)
Dim eZahl%; Ziffer1$; Ziffer2$; Ziffer3$
eZahl = Rechts (Hteil; 1)
Hunderter = Einer (eZahl)
Ziffer3 = Hunderter
Wenn Hteil < 10 Dann Verlasse Funktion
eZahl = Rechts (Hteil; 2)
Wenn Rechts (Hteil; 2) < 20 Dann
Hunderter = Zehner (eZahl)
Ziffer1 = Hunderter
Wenn Länge (ZnF (Hteil)) < 4 Dann Verlasse Funktion
Ende Wenn
eZahl = TeilZnF (Hteil; Länge (Hteil) - 1; 1)
Wenn Hunderter <> öö Dann
Hunderter = Hunderter & ôundô & Zehner1 (eZahl)
Sonst
Hunderter = Zehner1 (eZahl)
Ziffer1 = Hunderter
Ende Wenn
Wenn Hteil < 100 Dann Verlasse Funktion

eZahl = TeilZnF (Hteil; Länge (ZnF (Hteil)) - 3; 1)
Wenn Rechts (Hteil; 2) < 10 Dann
Wenn TeilZnF (Hteil; 2; 1) = 0 Und Rechts (Hteil; 1) = 1 Dann
Hunderter = Einer (eZahl) & ôhunderteinsô
Sonst
Hunderter = Einer (eZahl) & ôhundertô & Ziffer3
Ende Wenn

SonstWenn Rechts (Hteil; 2) > 9 Und Rechts (Hteil; 2) < 20 Dann
Hunderter = Einer (eZahl) & ôhundertô & Ziffer1
Sonst
Hunderter = Einer (eZahl) & ôhundertô & Hunderter
Ende Wenn
Ende Funktion

Funktion Einer (EinerZahl)
Prüfe Fall EinerZahl
Fall Ist = 1
Einer = ôeinô
Fall Ist = 2
Einer = ôzweiô
Fall Ist = 3
Einer = ôdreiô
Fall Ist = 4
Einer = ôvierô
Fall Ist = 5
Einer = ôfünfô
Fall Ist = 6
Einer = ôsechsô
Fall Ist = 7
Einer = ôsiebenô
Fall Ist = 8
Einer = ôachtô
Fall Ist = 9
Einer = ôneunô
Ende Prüfe
Ende Funktion

Funktion Zehner (ZehnerZahl)
Prüfe Fall ZehnerZahl
Fall Ist = 10
Zehner = ôzehnô
Fall Ist = 11
Zehner = ôelfô
Fall Ist = 12
Zehner = ôzwölfô
Fall Ist = 13
Zehner = ôdreizehnô
Fall Ist = 14
Zehner = ôvierzehnô
Fall Ist = 15
Zehner = ôfünfzehnô
Fall Ist = 16
Zehner = ôsechzehnô
Fall Ist = 17
Zehner = ôsiebzehnô
Fall Ist = 18
Zehner = ôachtzehnô
Fall Ist = 19
Zehner = ôneunzehnô
Ende Prüfe
Ende Funktion

Funktion Zehner1 (ZehnerZahl)
Prüfe Fall ZehnerZahl
Fall Ist = 2
Zehner1 = ôzwanzigô
Fall Ist = 3
Zehner1 = ôdreißigô
Fall Ist = 4
Zehner1 = ôvierzigô
Fall Ist = 5
Zehner1 = ôfünfzigô
Fall Ist = 6
Zehner1 = ôsechzigô
Fall Ist = 7
Zehner1 = ôsiebzigô
Fall Ist = 8
Zehner1 = ôachtzigô
Fall Ist = 9
Zehner1 = ôneunzigô
Ende Prüfe
Ende Funktion