Solved

Converting of digits in dollars in numbers to words

Posted on 2006-06-27
5
736 Views
Last Modified: 2007-12-19
Hi,

I would like to know whats the most efficient way to convert digits to words i.e

12.00 to twelve dollars

12.34 to twelve dollars and thirty-four cents.

Thanks.
0
Comment
Question by:jedistar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 6

Expert Comment

by:cubixSoftware
ID: 16993355
Hi

This is a Excel VBA function, but should be easy to convert over
http://xl.barasch.com/cCo11432.htm


or try this

http://www.vbcity.com/forums/topic.asp?tid=120553&#RID384555

0
 
LVL 15

Accepted Solution

by:
JackOfPH earned 250 total points
ID: 16997733
//**************************************
    //    
    // Name: Currency2Text
    // Description:This function converts am
    //     ount in words with supplied currency par
    //     ameters.
    (based on AmtToWords by Atul Alurkar)
    // By: Rohan Cragg
    //
    // Inputs:Amount As Double
    UnitCurr As String ' e.g. POUND, DOLLAR, EURO
    DecCurr As String ' e.g. PENNY, CENT
    UnitsCurr As String ' e.g. POUNDS, DOLLARS
    DecsCurr As String ' e.g. PENCE, CENTS, EUROS
    UpperCase as Boolean ' optional parameter to state if you want results in UpperCase or not
    //
    // Returns:The currency ammount in words
    //     (in English but you could easily change
    //     it to another language) e.g. Curr2Text(1
    //     2345.01, "POUND", "PENNY", "POUNDS", "PE
    //     NCE", True) will return "TWELVE THOUSAND
    //     THREE HUNDRED FORTY-FIVE POUNDS AND ONE
    //     PENNY ONLY"
    //
    // Assumes:maximum amount that can be co
    //     nverted by this function is 922,337,203,
    //     685,477
    //
    //This code is copyrighted and has    // limited warranties.Please see http://
    //     www.Planet-Source-Code.com/vb/scripts/Sh
    //     owCode.asp?txtCodeId=2136&lngWId=10    //for details.    //**************************************
    //    
   
    Public Function Curr2Text(ByVal amount As Double, _
    ByVal UnitCurr As String, _
    ByVal DecCurr As String, _
    ByVal UnitsCurr As String, _
    ByVal DecsCurr As String, _
    Optional ByVal UpperCase As Boolean = False) As String
    Dim new_amt, TRstring, BIstring, MIstring, THstring, HUstring, DEstring, Separator As String
    If amount = 0 Then
    Curr2Text = "NIL"
    Exit Function
    End If
    units(0) = ""
    units(1) = " ONE"
    units(2) = " TWO"
    units(3) = " THREE"
    units(4) = " FOUR"
    units(5) = " FIVE"
    units(6) = " SIX"
    units(7) = " SEVEN"
    units(8) = " EIGHT"
    units(9) = " NINE"
    units(10) = " TEN"
    units(11) = " ELEVEN"
    units(12) = " TWELVE"
    units(13) = " THIRTEEN"
    units(14) = " FOURTEEN"
    units(15) = " FIFTEEN"
    units(16) = " SIXTEEN"
    units(17) = " SEVENTEEN"
    units(18) = " EIGHTEEN"
    units(19) = " NINETEEN"
    teens(0) = ""
    teens(1) = " TEN"
    teens(2) = " TWENTY"
    teens(3) = " THIRTY"
    teens(4) = " FORTY"
    teens(5) = " FIFTY"
    teens(6) = " SIXTY"
    teens(7) = " SEVENTY"
    teens(8) = " EIGHTY"
    teens(9) = " NINETY"
    teens(10) = " HUNDRED"
    new_amt = Format(amount, "000000000000000.00")
    TRstring = Mid(new_amt, 1, 3)
    BIstring = Mid(new_amt, 4, 3)
    MIstring = Mid(new_amt, 7, 3)
    THstring = Mid(new_amt, 10, 3)
    HUstring = Mid(new_amt, 13, 3)
    DEstring = "0" & Mid(new_amt, 17, 2)
    Curr2Text = ""
    UnitCurr = IIf(CInt(Left(new_amt, 15)) = 0, "", UnitCurr).ToString
    DecCurr = IIf(CInt(Right(new_amt, 2)) = 0, "", DecCurr).ToString
    UnitCurr = IIf(CInt(Left(new_amt, 15)) > 1, UnitsCurr, UnitCurr).ToString
    DecCurr = IIf(CInt(Right(new_amt, 2)) > 1, DecsCurr, DecCurr).ToString
    Separator = IIf(Not UnitCurr.Equals(String.Empty) And Not DecCurr.Equals(String.Empty), " AND", String.Empty).ToString
    'Curr2Text = UnitCurr & Curr2Text
    Curr2Text &= IIf(CInt(TRstring) > 0, numconv(TRstring) & " TRILLION", "").ToString
    Curr2Text &= IIf(CInt(BIstring) > 0, numconv(BIstring) & " BILLION", "").ToString
    Curr2Text &= IIf(CInt(MIstring) > 0, numconv(MIstring) & " MILLION", "").ToString
    Curr2Text &= IIf(CInt(THstring) > 0, numconv(THstring) & " THOUSAND", "").ToString
    Curr2Text &= IIf(CInt(HUstring) > 0, numconv(HUstring), "").ToString
    Curr2Text &= " " & UnitCurr
    Curr2Text &= IIf(CInt(DEstring) > 0, Separator & numconv(DEstring), "").ToString
    Curr2Text = Curr2Text.Trim & IIf(Not DecCurr.Equals(String.Empty), " " & DecCurr.Trim, String.Empty).ToString
    Curr2Text &= " ONLY"
    If UpperCase = False Then
    Return Curr2Text.Substring(0, 1) & Curr2Text.Substring(1, Curr2Text.Length - 1).ToLower
    Else
    Return Curr2Text
    End If
    End Function
    Private Function numconv(ByVal amt As String) As String
    Dim aAmount, bAmount, cAmount, dAmount As Integer
    Dim hyphen As String
    aAmount = CInt(amt.Substring(1, 2))
    bAmount = CInt(amt.Substring(2, 1))
    cAmount = CInt(amt.Substring(1, 1))
    dAmount = CInt(amt.Substring(0, 1))
    If aAmount < 20 Then
    numconv = units(aAmount)
    Else
    numconv = units(bAmount)
    If bAmount > 0 And cAmount > 0 Then
    hyphen = "-"
    End If
    numconv = teens(cAmount) & hyphen & numconv.TrimStart
    End If
    If dAmount > 0 Then
    If numconv.Equals(String.Empty) Then
    numconv = units(dAmount) & " HUNDRED" & numconv
    Else
    numconv = units(dAmount) & " HUNDRED AND" & numconv
    End If
    End If
    End Function

The above code is from ...
http://pscode.com/vb/scripts/ShowCode.asp?txtCodeId=2136&lngWId=10
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …

690 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question