Format Numbers

B

Bryan Hughes

Hello,

Is it possible to convert numbers to there coresponding text values?

1 = First
2 = Second
3 = Third
4 = Four
etc.

-Bryan
 
D

Doug

You will have to make a function to do what you want to
do. Here isa sample that does what you want to do.

Public Function NumConverter(ByVal sNumber As String) As
String
Dim sNum As String
Select Case sNumber
Case Is = "0"
sNum = "Zero"
Case Is = "1"
sNum = "One"
Case Is = "2"
sNum = "Two"
Case Is = "3"
sNum = "Thee"
Case Else
sNum = "You did not enter a Number"

End Select
NumConverter = sNum
End Function

Hope this helps,
Doug
 
B

Bryan Hughes

Hello,

Thanks for the replies. Marshall, I actually want to use ordinal numbers .
It will be used for a msgbox to users when entering in new clint records and
return back to them the ordinal number after doing a count for the record
criteria.

I tried using the function Doug gave as an example but it keep giving me
errors. I can rember what I think it was object not defined.

-Bryan
 
M

Marshall Barton

Bryan said:
Thanks for the replies. Marshall, I actually want to use ordinal numbers .
It will be used for a msgbox to users when entering in new clint records and
return back to them the ordinal number after doing a count for the record
criteria.

Ok here it is, have fun unraveling the word wrapping ;-)

Function TextOrdinal(ByVal lngAmt As Long) As String
Dim astrOrdOnes As Variant, astrOrdTens As Variant, astrOnes
As Variant, astrTens As Variant, astrGroups As Variant
Dim strAmt As String, strResult As String, strGroupAmt As
String, strAnd As String
Dim intCents As Integer, intAmtLen As Integer, intGrp As
Integer

If lngAmt < 0 Then TextOrdinal = "NEGATIVE": Exit
Function
astrOrdOnes = Array(Null, "first", "second", "third",
"fourth", "fifth", "sixth", "seventh", "eighth", "ninth", _
"tenth", "eleventh", "twelfth",
"thirteenth", "fourteenth", "fifteenth", "sixteenth",
"seventeenth", "eighteenth", "nineteenth")
astrOrdTens = Array(Null, "", "twentieth", "thirtieth",
"fortieth", "fiftieth", "sixtieth", "seventieth",
"eightieth", "nintieth")
astrOnes = Array(Null, "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine", _
"ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen")
astrTens = Array(Null, "", "twenty", "thirty", "forty",
"fifty", "sixty", "seventy", "eighty", "ninty")
astrGroups = Array(Null, "thousand", "million",
"billion", "trillion") ' "quadrillion", "quintillion",
"sextillion", "septillion")

strAmt = Format$(lngAmt, " 0") ' Convert to string
without fractional part
intAmtLen = Len(strAmt)

If lngAmt = "0" Then
strResult = "zeroth "
Else
If lngAmt >= 100 Then strAnd = "and "
For intGrp = 0 To UBound(astrGroups)
strGroupAmt = Mid$(strAmt, intAmtLen - 3 *
intGrp - 2, 3)
If strGroupAmt = " " Then Exit For
If Val(strGroupAmt) > 0 Then
If strResult = "" Then ' Thousands,
millions, etc.
strResult = (astrGroups(intGrp) + "th
") & ""
Else
strResult = (astrGroups(intGrp) + " ") &
strResult
End If
If Val(Mid$(strGroupAmt, 2)) >= 20 Then
If strResult = "" Then
If Mid$(strGroupAmt, 3, 1) = "0"
Then
strResult = strAnd &
astrOrdTens(Mid$(strGroupAmt, 2, 1))
Else
strResult = strAnd &
((astrTens(Mid$(strGroupAmt, 2, 1)) & ("-" +
astrOrdOnes(Mid$(strGroupAmt, 3, 1)))) + " ")
End If
Else
strResult =
((astrTens(Mid$(strGroupAmt, 2, 1)) &
astrOnes(Mid$(strGroupAmt, 3, 1))) + " ") & strResult
End If
Else ' 0 through 19
If strResult = "" Then
strResult = (strAnd +
astrOrdOnes(Mid$(strGroupAmt, 2, 2)) + " ") & ""
Else
strResult =
(astrOnes(Mid$(strGroupAmt, 2, 2)) + " ") & strResult
End If
End If
If strResult = "" Then ' Hundreds
strResult =
(astrOnes(Val(Left$(strGroupAmt, 1))) + " hundredth ") & ""
Else
strResult =
(astrOnes(Val(Left$(strGroupAmt, 1))) + " hundred ") &
strResult
End If
End If
strAnd = ""
Next intGrp
End If

TextOrdinal = strResult
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top