[AccessD] Number to Words

David McAfee davidmcafee at gmail.com
Tue May 19 17:47:21 CDT 2009


Works good up to Ninety Nine Million Nine Hundred and Ninety Nine Thousand
Nine Hundred and Ninety Nine dollar and Ninety Nine :)

You forgot to Dim million as Long

On Tue, May 19, 2009 at 3:29 PM, Stuart McLachlan <stuart at lexacorp.com.pg>wrote:

> On 19 May 2009 at 7:38, Rocky Smolin wrote:
>
> > Dear List:
> >
> > I have a requirement to convert a number to it's equivalent into words.
> > Found a couple of functions on the web.  So it looks pretty
> straightforward.
> > Cut and paste.
> >
> > But does anybody have any favorites.  Or warnings?
> >
>
> Here's my own routine to do it for money.  It would be very simple to tweak
> it slightly if you
> want to use it for negative numbers (use Abs() and stick the word "Negative
> " or "Minus" at
> the start of the string), whole numbers (just drop all the "cents" part) or
> for varying decimal
> places ( a bit more work).
>
> Function moneywords(amount As Double) As String
> If  amount = 0  Then moneywords = "Nothing": Exit Function
> Dim dollar As Long
> Dim hundredthousands As Long
> Dim thousands As Long
> Dim hundreds As Long
> Dim tens As Long
> Dim units As Long
> Dim cents As Long
> Dim money As String
> dollar = Int(amount)
> cents = (amount - dollar) * 100
> thousands = Int(dollar / 1000)
> millions = Int(dollar / 1000000)
> hundredthousands = Int((dollar - (millions * 1000000)) / 100000)
> thousands = Int((dollar - (millions * 1000000) - (hundredthousands *
> 100000)) / 1000)
> hundreds = Int((dollar - (millions * 1000000) _
>    - (hundredthousands * 100000) - (thousands * 1000)) / 100)
> units = dollar - (millions * 1000000) - (hundredthousands * 100000) _
>    - thousands * 1000 - hundreds * 100
> If dollar = 0 Then money = "Zero"
>
> Select Case millions
> Case 1 To 19
> money = unitword(millions) & " Million"
> Case 20 To 99
> money = money & " " & Trim(teenword(Int(millions / 10)) & _
>   " " & unitword(millions - Int(millions / 10) * 10)) & " Million"
> Case Is > 99
> moneywords = "AT LEAST one hundred million dollar!"
> Exit Function
> End Select
>
> Select Case hundredthousands
> Case 1 To 9
> money = money & " " & unitword(hundredthousands) & " Hundred"
> End Select
>
> Select Case thousands
> Case 0
> If hundredthousands > 0 Then money = money & " Thousand"
> Case 1 To 19
> If hundredthousands > 0 Then money = money & " and"
> money = money & " " & unitword(thousands) & " Thousand"
> Case 20 To 99
> If hundredthousands > 0 Then money = money & " and"
> money = money & " " & Trim(teenword(Int(thousands / 10)) & _
>  " " & unitword(thousands - Int(thousands / 10) * 10)) & " Thousand"
> End Select
>
> Select Case hundreds
> Case 1 To 9
> money = money & " " & unitword(hundreds) & " Hundred"
> End Select
> If (millions + hundredthousands + thousands + hundreds) > 0 _
>    And units > 0 Then money = money & " and"
>
> Select Case units
> Case 1 To 19
> money = money & " " & unitword(units)
> Case 20 To 99
> money = money & " " & Trim(teenword(Int(units / 10)) & _
>  " " & unitword(units - Int(units / 10) * 10))
> End Select
> money = money & " dollar"
>
> Select Case cents
> Case 0
> money = money & " Only"
> Case 1 To 19
> money = money & " and " & unitword(cents) & " cents Exactly"
> Case 20 To 99
> money = money & " and " & Trim(teenword(Int(cents / 10)) & _
>  " " & unitword(cents - Int(cents / 10) * 10)) & " cents Exactly"
> End Select
>
> moneywords = money
> End Function
>
> Function teenword(amount) As String
> Dim unitname(9) As String
> unitname(2) = "Twenty"
> unitname(3) = "Thirty"
> unitname(4) = "Forty"
> unitname(5) = "Fifty"
> unitname(6) = "Sixty"
> unitname(7) = "Seventy"
> unitname(8) = "Eighty"
> unitname(9) = "Ninety"
> teenword = unitname(amount)
> End Function
>
> Function unitword(amount) As String
> Dim unitname(19) As String
>
> unitname(1) = "One"
> unitname(2) = "Two"
> unitname(3) = "Three"
> unitname(4) = "Four"
> unitname(5) = "Five"
> unitname(6) = "Six"
> unitname(7) = "Seven"
> unitname(8) = "Eight"
> unitname(9) = "Nine"
> unitname(10) = "Ten"
> unitname(11) = "Eleven"
> unitname(12) = "Twelve"
> unitname(13) = "Thirteen"
> unitname(14) = "Fourteen"
> unitname(15) = "Fifteen"
> unitname(16) = "Sixteen"
> unitname(17) = "Seventeen"
> unitname(18) = "Eighteen"
> unitname(19) = "Nineteen"
> unitword = unitname(amount)
> End Function
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>



More information about the AccessD mailing list