There are loads already, including
http://www.xldynamic.com/source/xld.xlFAQ0004.html

Signature
---
HTH
Bob
(there's no email, no snail mail, but somewhere should be gmail in my addy)
> John,
>
[quoted text clipped - 46 lines]
>> SetBillions = sTemp
>> End Function
The following is a modified version of one of the routines
(SpellNumber) linked by Bob Phillips.
It handles decimal points as you requested.
I modified it for the following reasons:
1. If 0 was passed it failed. It now returns Zero.
2. There were double spaces between some words.
3. If you passed a parameter for the cents parameter along with a
whole number, the result was something like 'Twleve Dollars Only
Cents'.
4. 'and' is used after hundreds, thousands etc as appropraite as I
prefer it that way. The code shows how this can be deleted if
required.
5. I allow for negative numbers.
6. I got rid of the fraction parameter as I don't need it.
7. I got rid of the Proper function as I wanted 'and' to remain
lowercase.
8. I changed Dollars and Cents to Pounds and Pence as the defaults.
John.
'
' SpellNumber
'
Function SpellNumber(ByVal n As Double, _
Optional ByVal useword As Boolean = True, _
Optional ByVal ccy As String = "Pounds", _
Optional ByVal cents As String = "Pence", _
Optional ByVal join As String = "and") As String
Dim myLength As Long
Dim i As Long
Dim myNum As Long
Dim Remainder As Long
Dim negative As Boolean
If n = 0# Then
SpellNumber = "Zero" & IIf(useword, " " & ccy, "")
Else
SpellNumber = ""
negative = n < 0#
If negative Then
n = n * -1#
End If
Remainder = Round(100 * (n - Int(n)), 0)
myLength = Int(Application.Log10(n) / 3)
For i = myLength To 0 Step -1
myNum = Int(n / 10 ^ (i * 3))
n = n - myNum * 10 ^ (i * 3)
If myNum > 0 Then
SpellNumber = SpellNumber & MakeWord(Int(myNum)) & _
Choose(i + 1, "", "Thousand ", "Million ", "Billion ",
"Trillion ")
' Add "and" between previous value and the following if it is
< 100 - CAN BE REMOVED BY DELETING THE FOLLOWING THREE LINES
If SpellNumber <> "" And n >= 1# And n < 100# Then
SpellNumber = SpellNumber & "and "
End If
End If
Next i
If SpellNumber <> "" Then
SpellNumber = Trim(SpellNumber & IIf(useword, ccy & " ", ""))
End If
If Remainder > 0 Then
SpellNumber = SpellNumber + Format(Remainder, " 00")
If cents <> "" Then
SpellNumber = SpellNumber + " " + cents
End If
Else
SpellNumber = SpellNumber + " Only"
End If
If negative Then
SpellNumber = "Minus " + SpellNumber
End If
End If
End Function
Function MakeWord(ByVal inValue As Long) As String
Dim unitWord, tenWord
Dim n As Long
Dim unit As Long, ten As Long, hund As Long
unitWord = Array("", "One", "Two", "Three", "Four", _
"Five", "Six", "Seven", "Eight", _
"Nine", "Ten", "Eleven", "Twelve", _
"Thirteen", "Fourteen", "Fifteen", _
"Sixteen", "Seventeen", "Eighteen", "Nineteen")
tenWord = Array("", "Ten", "Twenty", "Thirty", "Forty", _
"Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
MakeWord = ""
n = inValue
If n = 0 Then MakeWord = "Zero"
hund = n \ 100
If hund > 0 Then MakeWord = MakeWord & MakeWord(Int(hund)) &
"Hundred"
n = n - hund * 100
If n > 0 And MakeWord <> "" Then
MakeWord = MakeWord + " and "
End If
If n < 20 Then
ten = n
MakeWord = MakeWord & unitWord(ten) & " "
Else
ten = n \ 10
MakeWord = MakeWord & tenWord(ten) & " "
unit = n - ten * 10
If unit > 0 Then
MakeWord = MakeWord & unitWord(unit) & " "
End If
End If
End Function