Excel 95: 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