Hi, I wish to help to correcting below function:-
** What i get with below function (in blue)** What i need
10.00 Ten Ten only
100.00 One Hundred and One Hundred only
100,000.00 One Hundred and Thousand One Hundred Thousand only
10.50 Ten And Cents Fifty only (Correct)
100.55 One Hundred and And Cents Fifty Fiveonly (Correct)
1,023.52 One Thousand Twenty Three And Cents Fifty Twoonly (Correct)
** What i get with below function (in blue)** What i need
10.00 Ten Ten only
100.00 One Hundred and One Hundred only
100,000.00 One Hundred and Thousand One Hundred Thousand only
10.50 Ten And Cents Fifty only (Correct)
100.55 One Hundred and And Cents Fifty Fiveonly (Correct)
1,023.52 One Thousand Twenty Three And Cents Fifty Twoonly (Correct)
VBA Code:
Function spellnumber(ByVal pNumber)
Dim Ringgit, Cents
arr = Array("", "", " Thousand ", " Million ", " Billion ", " Trillion ")
pNumber = Trim(Str(pNumber))
xDecimal = InStr(pNumber, ".")
If xDecimal > 0 Then
Cents = GetTens(Left(Mid(pNumber, xDecimal + 1) & "00", 2))
pNumber = Trim(Left(pNumber, xDecimal - 1))
End If
xIndex = 1
Do While pNumber <> ""
xHundred = ""
xValue = Right(pNumber, 3)
If Val(xValue) <> 0 Then
xValue = Right("000" & xValue, 3)
If Mid(xValue, 1, 1) <> "0" Then
xHundred = GetDigit(Mid(xValue, 1, 1)) & " Hundred and "
End If
If Mid(xValue, 2, 1) <> "0" Then
xHundred = xHundred & GetTens(Mid(xValue, 2))
Else
xHundred = xHundred & GetDigit(Mid(xValue, 3))
End If
End If
If xHundred <> "" Then
Ringgit = xHundred & arr(xIndex) & Ringgit
End If
If Len(pNumber) > 3 Then
pNumber = Left(pNumber, Len(pNumber) - 3)
Else
pNumber = ""
End If
xIndex = xIndex + 1
Loop
Select Case Ringgit
Case ""
Ringgit = ""
Case "One"
Ringgit = "One Ringgit"
Case Else
Ringgit = "" & Ringgit & " only"
End Select
Select Case Cents
Case ""
Cents = ""
Case "One"
Cents = "One Cent"
Case Else
Cents = " And Cents " & Cents & "only"
End Select
spellnumber = Ringgit & Cents
End Function
Function GetTens(pTens)
Dim Result As String
Result = ""
If Val(Left(pTens, 1)) = 1 Then
Select Case Val(pTens)
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
Select Case Val(Left(pTens, 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
Result = Result & GetDigit(Right(pTens, 1))
End If
GetTens = Result
End Function
Function GetDigit(pDigit)
Select Case Val(pDigit)
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
Last edited by a moderator: