Monday, July 25, 2011

'Function to convert The Currency in words


Public Function GetCurrencyInWords(ByVal NumberinDigits As Double) As String

MyNumber = NumberinDigits.ToString

Place(2) = " Thousand "

Place(3) = " Lakh"

Place(4) = " Crore"

'Place(5) = " Trillion "

' Convert MyNumber to a string, trimming extra spaces.

'MyNumber = Trim(Str(MyNumber))

' Find decimal place.

DecimalPlace = InStr(MyNumber, ".")

' If we find decimal place...

If DecimalPlace > 0 Then

' Convert Paises

Temp = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)

Paises = ConvertTens(Temp)

' Strip off Paises from remainder to convert.

MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

End If

Count = 1


'For Hundred

If MyNumber <> "" Then

' Convert last 3 digits of MyNumber to English Rupees.

Temp = ConvertHundreds(Right(MyNumber, 3))

If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees

If Len(MyNumber) > 3 Then

' Remove last 3 converted digits from MyNumber.

MyNumber = Left(MyNumber, Len(MyNumber) - 3)

Else

MyNumber = ""

End If

Count = Count + 1

End If

'For thousand

If MyNumber <> "" Then

' Convert last 2 digits of MyNumber to English Rupees.

'Temp = ConvertTens(Right(MyNumber, 2))

If Len(MyNumber) = 1 Then

Temp = ConvertTens("0" & MyNumber)

Else

Temp = ConvertTens(Right(MyNumber, 2))

End If

If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees

If Len(MyNumber) > 2 Then

' Remove last 3 converted digits from MyNumber.

MyNumber = Left(MyNumber, Len(MyNumber) - 2)

Else

MyNumber = ""

End If

Count = Count + 1

End If

'For Lakhs and hence forth

'If MyNumber <> "" Then

Do While MyNumber <> ""

' Convert last 2 digits of MyNumber to English Rupees.

If Len(MyNumber) = 1 Then

Temp = ConvertTens("0" & MyNumber)

Else

Temp = ConvertTens(Right(MyNumber, 2))

End If

If Temp <> "" Then

If Temp = "One" Then

Rupees = Temp & Place(Count) & " " & Rupees

Else

Rupees = Temp & Place(Count) & "s " & Rupees

End If

End If

If Len(MyNumber) > 2 Then

' Remove last 3 converted digits from MyNumber.

MyNumber = Left(MyNumber, Len(MyNumber) - 2)

Else

MyNumber = ""

End If

Count = Count + 1

Loop

' Clean up Rupees.

'Select Case Rupees

' Case ""

' Rupees = "No Rupees"

' Case "One"

' Rupees = "One Rupee"

' Case Else

' Rupees = Rupees & " Rupees"

'End Select

' Clean up Paises.

Select Case Paises

Case ""

Paises = ""

Case Else

If Rupees <> "" Then

Paises = " And " & Paises & " Paise"

Else

Paises = Paises & " Paise"

End If

End Select

If Rupees = "" And Paises = "" Then

GetCurrencyInWords = ""

Else

GetCurrencyInWords = Rupees & Paises & " Only"

End If

End Function

Private Function ConvertHundreds(ByVal MyNumber)

Dim Result As String

' Exit if there is nothing to convert.

If Val(MyNumber) = 0 Then Exit Function

' Append leading zeros to number.

MyNumber = Right("000" & MyNumber, 3)

' Do we have a hundreds place digit to convert?

If Left(MyNumber, 1) <> "0" Then

Result = ConvertDigit(Left(MyNumber, 1)) & " Hundred "

End If

' Do we have a tens place digit to convert?

If Mid(MyNumber, 2, 1) <> "0" Then

Result = Result & ConvertTens(Mid(MyNumber, 2))

Else

' If not, then convert the ones place digit.

Result = Result & ConvertDigit(Mid(MyNumber, 3))

End If

ConvertHundreds = Trim(Result)

End Function


Private Function ConvertTens(ByVal MyTens)

Dim Result As String

' Is value between 10 and 19?

If Val(Left(MyTens, 1)) = 1 Then

Select Case Val(MyTens)

Case 10 : Result = "Ten"

Case 11 : Result = "Eleven"

Case 12 : Result = "Twelve"

Case 13 : Result = "Thirteen"

Case 14 : Result = "Fourteen"

Case 15 : Result = "Fifteen"

Case 16 : Result = "Sixteen"

Case 17 : Result = "Seventeen"

Case 18 : Result = "Eighteen"

Case 19 : Result = "Nineteen"

Case Else

End Select

Else

' .. otherwise it's between 20 and 99.

Select Case Val(Left(MyTens, 1))

Case 2 : Result = "Twenty "

Case 3 : Result = "Thirty "

Case 4 : Result = "Forty "

Case 5 : Result = "Fifty "

Case 6 : Result = "Sixty "

Case 7 : Result = "Seventy "

Case 8 : Result = "Eighty "

Case 9 : Result = "Ninety "

Case Else

End Select


' Convert ones place digit.

Result = Result & ConvertDigit(Right(MyTens, 1))

End If

ConvertTens = Result

End Function


Private Function ConvertDigit(ByVal MyDigit)

Select Case Val(MyDigit)

Case 1 : ConvertDigit = "One"

Case 2 : ConvertDigit = "Two"

Case 3 : ConvertDigit = "Three"

Case 4 : ConvertDigit = "Four"

Case 5 : ConvertDigit = "Five"

Case 6 : ConvertDigit = "Six"

Case 7 : ConvertDigit = "Seven"

Case 8 : ConvertDigit = "Eight"

Case 9 : ConvertDigit = "Nine"

Case Else : ConvertDigit = ""


End Select


End Function

Your valuable comment will be appreciated..

No comments:

Post a Comment