excel vba number to words
Function NumberToWords(ByVal MyNumber As Double) As String
Dim DecimalPlace, Count
Dim Hundreds, Words, FirstDigit, TensDigit As String
ReDim Place(9) As String
Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
MyNumber = Trim(Str(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
MyNumber = Left(MyNumber, DecimalPlace - 1)
End If
Count = 1
Do While MyNumber <> ""
Hundreds = ""
Select Case Right(MyNumber, 3)
Case Is < 100
TensDigit = ""
FirstDigit = ConvertDigit(Val(Right(MyNumber, 1)))
If Val(Right(MyNumber, 2)) < 20 Then
TensDigit = ConvertTen(Val(Right(MyNumber, 2)))
FirstDigit = ""
Else
TensDigit = ConvertTen(Val(Mid(MyNumber, Len(MyNumber) - 1, 2)))
FirstDigit = ConvertDigit(Val(Right(MyNumber, 1)))
End If
Case Else
Hundreds = ConvertDigit(Val(Right(MyNumber, 3) \ 100)) & " Hundred "
TensDigit = ConvertTen(Val(Mid(MyNumber, Len(MyNumber) - 1, 2)))
FirstDigit = ConvertDigit(Val(Right(MyNumber, 1)))
End Select
If Len(MyNumber) > 3 Then
If Right(MyNumber, 3) <> "000" Then
Words = Hundreds & TensDigit & FirstDigit & Place(Count) & Words
End If
Else
Words = Hundreds & TensDigit & FirstDigit & Words
End If
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Count = Count + 1
Loop
NumberToWords = Words
End Function
Function ConvertDigit(ByVal MyDigit) As String
Select Case 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
Function ConvertTen(ByVal MyTens) As String
Select Case MyTens
Case 10: ConvertTen = "Ten"
Case 11: ConvertTen = "Eleven"
Case 12: ConvertTen = "Twelve"
Case 13: ConvertTen = "Thirteen"
Case 14: ConvertTen = "Fourteen"
Case 15: ConvertTen = "Fifteen"
Case 16: ConvertTen = "Sixteen"
Case 17: ConvertTen = "Seventeen"
Case 18: ConvertTen = "Eighteen"
Case 19: ConvertTen = "Nineteen"
Case Else
Select Case MyTens \ 10
Case 2: ConvertTen = "Twenty"
Case 3: ConvertTen = "Thirty"
Case 4: ConvertTen = "Forty"
Case 5: ConvertTen = "Fifty"
Case 6: ConvertTen = "Sixty"
Case 7: ConvertTen = "Seventy"
Case 8: ConvertTen = "Eighty"
Case 9: ConvertTen = "Ninety"
Case Else: ConvertTen = ""
End Select
End Select
End Function