Convert Numbers to Text (NPR)
This VBA Code will create a simple function named "SpellNumber" that will basically convert the number into Text. We can get a lot of codes for conversion in English Currencies but this will convert in Nepali Currency Unit (i.e. Crore, Lakh etc.)
1. Open an Excel Sheet.
2. Now open the VBA Code window by pressing Alt + F11
3. In the VBA Tab click Insert Menu and Insert "Module".
4. Double Click the inserted Module and inside it paste the VBA Code provided below.
5. Now go back to excel sheet and you can use the function "SpellNumber"
6. So type =SpellNumber(select cell with number) and enter.
Function SpellNumber(ByVal MyNumber) Dim Rupees, Paise, Temp Dim DecimalPlace, Count ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Lakh " Place(4) = " Crore " Place(5) = " Arba " MyNumber = Trim(Str(MyNumber)) DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 Then Paise = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)) MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" If Count <= 1 Then If Len(MyNumber) = 1 Then Temp = GetDigit(MyNumber) ElseIf Len(MyNumber) = 2 Then Temp = GetTens(MyNumber) Else Temp = GetHundreds(Right(MyNumber, 3)) End If If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 ElseIf Count > 5 Then Rupees = "This function only converts up to Arba." Paise = " " Exit Do Else If Len(MyNumber) = 1 Then Temp = GetDigit(MyNumber) ElseIf Len(MyNumber) = 2 Then Temp = GetTens(MyNumber) Else Temp = GetTens(Right(MyNumber, 2)) End If If Temp <> "" Then Rupees = Temp & Place(Count) & Rupees If Len(MyNumber) > 2 Then MyNumber = Left(MyNumber, Len(MyNumber) - 2) Else MyNumber = "" End If Count = Count + 1 End If Loop Select Case Rupees Case "This function only converts up to Arba." Rupees = Rupees Case "" Rupees = "No Rupees" Case "One" Rupees = "One Rupees" Case Else Rupees = Rupees & " Rupees" End Select Select Case Paise Case " " Paise = " " Case "" Paise = " and No Paisa" Case "One" Paise = " and One Paisa" Case Else Paise = " and " & Paise & " Paisa" End Select SpellNumber = Rupees & Paise End Function Function GetHundreds(ByVal MyNumber) Dim Result As String If MyNumber = 0 Then Exit Function If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else: Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function Function GetTens(TensText) Dim Result As String Result = "" If Left(TensText, 1) = 1 Then Select Case Val(TensText) 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(TensText, 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 Result = Result & GetDigit(Right(TensText, 1)) End If GetTens = Result End Function Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = "One" Case 2: GetDigit = "Two" Case 3: GetDigit = "Three" Case 4: GetDigit = "Four" Case 5: GetDigit = "Five" Case 6: GetDigit = "Six" Case 7: GetDigit = "Seven" Case 8: GetDigit = "Eight" Case 9: GetDigit = "Nine" Case Else: GetDigit = "" End Select End Function
No comments:
Post a Comment