Skip to main content

Rupees into words

Option Explicit Function RupeesInWords(ByVal MyNumber As Double) As String Dim Rupees As String Dim Paise As String Dim Temp As String Dim DecimalPlace As Integer MyNumber = Round(MyNumber, 2) DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 Then Rupees = Left(MyNumber, DecimalPlace - 1) Paise = Mid(MyNumber, DecimalPlace + 1) Else Rupees = MyNumber Paise = "" End If RupeesInWords = "" If Val(Rupees) > 0 Then RupeesInWords = ConvertToWords(Rupees) & " Rupees" End If If Val(Paise) > 0 Then RupeesInWords = RupeesInWords & " and " & ConvertTwoDigits(Left(Paise & "00", 2)) & " Paise" End If RupeesInWords = Application.WorksheetFunction.Trim(RupeesInWords) & " Only" End Function Private Function ConvertToWords(ByVal MyNumber As String) As String Dim Crores As String Dim Lakhs As String Dim Thousands As String Dim Hundreds As String Dim Temp As String MyNumber = Right("0000000000" & MyNumber, 10) Crores = Left(MyNumber, 3) Lakhs = Mid(MyNumber, 4, 2) Thousands = Mid(MyNumber, 6, 2) Hundreds = Right(MyNumber, 3) If Val(Crores) > 0 Then Temp = Temp & ConvertHundreds(Crores) & " Crore " End If If Val(Lakhs) > 0 Then Temp = Temp & ConvertHundreds(Lakhs) & " Lakh " End If If Val(Thousands) > 0 Then Temp = Temp & ConvertHundreds(Thousands) & " Thousand " End If If Val(Hundreds) > 0 Then Temp = Temp & ConvertHundreds(Hundreds) End If ConvertToWords = Temp End Function Private Function ConvertHundreds(ByVal MyNumber As String) As String Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) If Mid(MyNumber, 1, 1) <> "0" Then Result = ConvertOneDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If If Mid(MyNumber, 2, 2) <> "00" Then If Result <> "" Then Result = Result & "" Result = Result & ConvertTwoDigits(Mid(MyNumber, 2, 2)) End If ConvertHundreds = Result End Function Private Function ConvertTwoDigits(ByVal MyNumber As String) As String Dim Result As String If Val(Left(MyNumber, 1)) = 1 Then Select Case Val(MyNumber) 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" End Select Else Select Case Val(Left(MyNumber, 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 " End Select If Val(Right(MyNumber, 1)) > 0 Then Result = Result & ConvertOneDigit(Right(MyNumber, 1)) End If End If ConvertTwoDigits = Result End Function Private Function ConvertOneDigit(ByVal MyNumber As String) As String Select Case Val(MyNumber) Case 1: ConvertOneDigit = "One" Case 2: ConvertOneDigit = "Two" Case 3: ConvertOneDigit = "Three" Case 4: ConvertOneDigit = "Four" Case 5: ConvertOneDigit = "Five" Case 6: ConvertOneDigit = "Six" Case 7: ConvertOneDigit = "Seven" Case 8: ConvertOneDigit = "Eight" Case 9: ConvertOneDigit = "Nine" Case Else: ConvertOneDigit = "" End Select End Function

Comments

Popular posts from this blog

Get multiple lookup values in single cell