VB Code:
Option Explicit
Public Function ToWords(ByVal nAmount As Currency) As String
Dim vSingle As Variant
Dim vTen As Variant
Dim sWords As String
Dim nNew As Currency
vSingle = Split("One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Eleven,Twelve,Thirteen,Fourteen,Fifteen,Sixteen,Seventeen,Eighteen,Nineteen", ",")
vTen = Split("Ten,Twenty,Thirty,Fourty,Fifty,Sixty,Seventy,Eighty,Ninety", ",")
Do While (nAmount > 0)
If nAmount > 1000000 Then
nNew = Int(nAmount / 1000000)
sWords = sWords & ToWords(nNew) & "MILLION, "
nAmount = nAmount - (Int(nAmount / 1000000) * 1000000)
ElseIf nAmount > 1000 Then
nNew = Int(nAmount / 1000)
sWords = sWords & ToWords(nNew) & "THOUSAND, "
nAmount = nAmount - (Int(nAmount / 1000) * 1000)
ElseIf nAmount > 100 Then
nNew = Int(nAmount / 100)
sWords = sWords & ToWords(nNew) & "HUNDRED AND "
nAmount = nAmount - (Int(nAmount / 100) * 100)
ElseIf nAmount > 10 Then
nNew = Int(nAmount / 10)
If nNew > 1 Then
sWords = sWords & vTen(nNew - 1) & " "
Else
sWords = sWords & vSingle(nAmount - 1) & " "
nAmount = 0
End If
nAmount = nAmount - (Int(nAmount / 10) * 10)
ElseIf nAmount > 0 Then
sWords = sWords & vSingle(nAmount - 1) & " "
nAmount = 0
End If
Loop
If Right(sWords, 2) = ", " Then
sWords = Left(sWords, Len(sWords) - 2)
ElseIf Right(sWords, 5) = " AND " Then
sWords = Left(sWords, Len(sWords) - 5)
End If
ToWords = UCase(sWords)
End Function