Supportnet / Forum / Datenbanken
Access: Zahlen in Worten
Frage
Hallo liebe Access Freunde
Ist es möglich anhand einer Formel ein Zahlenbetrag in Worten auszuschreiben.
Bsp
Der Betrag von 80 € soll als "achtzig" angezeigt werden.
Würde mich über eine baldige Antwort freuen !
Vielen Dank für eure Hilfen.
mfg
Jimmy
Antwort 1 von Koebi
Grüezi Jimmy
Folgende Funktion sollte helfen. Sie stammt nicht von mir, dürfte also funktionieren.
Gruss
Köbi
Folgende Funktion sollte helfen. Sie stammt nicht von mir, dürfte also funktionieren.
Function CurStr(InputValue, Optional Round, Optional Nulls)
´Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
´Standardeinstellung #Round = 0 (ohne Nachkommastellen)
´z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
´Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
If IsNull(InputValue) Then
CurStr = Null
Exit Function
End If
If VarType(Round) = vbError Then Round = 0
If VarType(Nulls) = vbError Then Nulls = False
Dim Dec As String
Select Case Round
Case Is > 0
InputValue = CLng((InputValue \ (10 ^ Round)) * (10 ^ Round))
Dec = "..."
Case -1
Dec = " komma " & CurStr((((InputValue - Int(InputValue)) * 100) \ 10) * 10, , True)
InputValue = CLng(Int(InputValue))
Case Is < -1
Select Case (InputValue - Int(InputValue)) * 100
Case Is = 0
Dec = " komma null" ´oder Leerstring wenn nicht geschrieben werden soll
Case 1 To 9
Dec = " komma null" & CurStr(((InputValue * 10 - Int(InputValue * 10)) * 10), , True)
Case Else
Dec = " komma " & CurStr(((InputValue - Int(InputValue)) * 100), , True)
End Select
InputValue = CLng(Int(InputValue))
Case Else
InputValue = CLng(Int(InputValue))
Dec = ""
End Select
Select Case InputValue
Case Is >= 1000000000
CurStr = "#FEHLER"
Case 0
CurStr = IIf(Nulls, "null", "") ´wenn Parameter Nulls wahr ist
Case 1
CurStr = "ein"
Case 2
CurStr = "zwei"
Case 3
CurStr = "drei"
Case 4
CurStr = "vier"
Case 5
CurStr = "fünf"
Case 6
CurStr = "sechs"
Case 7
CurStr = "sieben"
Case 8
CurStr = "acht"
Case 9
CurStr = "neun"
Case 10
CurStr = "zehn"
Case 20
CurStr = "zwanzig"
Case 30
CurStr = "dreißig"
Case 40
CurStr = "vierzig"
Case 50
CurStr = "fünfzig"
Case 60
CurStr = "sechzig"
Case 70
CurStr = "siebzig"
Case 80
CurStr = "achzig"
Case 90
CurStr = "neunzig"
Case 11
CurStr = "elf"
Case 12
CurStr = "zwölf"
Case 13 To 19
CurStr = CurStr(InputValue - 10) & "zehn"
Case 100 To 999
CurStr = CurStr(InputValue \ 100) & "hundert" & _
CurStr(InputValue - ((InputValue \ 100) * 100))
Case 1000 To 999999
CurStr = CurStr(InputValue \ 1000) & "tausend " & _
CurStr(InputValue - ((InputValue \ 1000) * 1000))
Case 1000000 To 999999999
CurStr = CurStr(InputValue \ 1000000) & "million" & _
IIf(InputValue \ 1000000 = 1, " ", "en ") & CurStr(InputValue - ((InputValue _
\ 1000000) * 1000000))
Case Else
CurStr = CurStr(InputValue - ((InputValue \ 10) * 10)) & "und" & _
CurStr(((InputValue \ 10) * 10))
End Select
CurStr = LTrim(Trim(CurStr) & Dec)
End Function
Gruss
Köbi
Antwort 2 von jimmy81
Danke für die Info.
Aber wo soll ich diesen Quelltext den einfügen?
Im Textfeld etwa ?
mfg
Jimmy
Aber wo soll ich diesen Quelltext den einfügen?
Im Textfeld etwa ?
mfg
Jimmy
Antwort 3 von Koebi
Hallo Jimmy
Kopiere die Funktion in ein neues Modul (das Modul darf dann nicht den gleichen Namen haben wie die Funktion).
Im Formular brauchst Du für die Darstellung der Zahl in Worten ein zusätzliches Textfeld, mit folgendem Steuerelementinhalt:
=CurStr([InputValue])
Wobei InputValue das entsprechende Zahlenfeld darstellt.
Wenn Du auch das Runden und die Nullerdarstellung der Funktion verwenden willst, lautet der Steuerelementinhalt:
=CurStr([InputValue];[Round];[Nulls])
Dafür müssen dann natürlich auch die entsprechenden Felder Round und Nulls vorhanden sein.
Wenn Du nicht klar kommst, kann ich Dir eine Beispiel-DB senden, bräuchte dann aber dazu Deine Mehl-Adresse und Angaben zur Access-Version.
Gruss
Köbi
Kopiere die Funktion in ein neues Modul (das Modul darf dann nicht den gleichen Namen haben wie die Funktion).
Im Formular brauchst Du für die Darstellung der Zahl in Worten ein zusätzliches Textfeld, mit folgendem Steuerelementinhalt:
=CurStr([InputValue])
Wobei InputValue das entsprechende Zahlenfeld darstellt.
Wenn Du auch das Runden und die Nullerdarstellung der Funktion verwenden willst, lautet der Steuerelementinhalt:
=CurStr([InputValue];[Round];[Nulls])
Dafür müssen dann natürlich auch die entsprechenden Felder Round und Nulls vorhanden sein.
Wenn Du nicht klar kommst, kann ich Dir eine Beispiel-DB senden, bräuchte dann aber dazu Deine Mehl-Adresse und Angaben zur Access-Version.
Gruss
Köbi
Antwort 4 von jimmy81
Hi Köbi
danke für deine schnelle Hilfe, ich würde mich gerne über eine Bsp.-DB freuen. Habe Access 2003.
E-mail: jimmyjames@web.de
Vielen Dank im Voraus
mfg
Jimmy
danke für deine schnelle Hilfe, ich würde mich gerne über eine Bsp.-DB freuen. Habe Access 2003.
E-mail: jimmyjames@web.de
Vielen Dank im Voraus
mfg
Jimmy