Results 1 to 3 of 3

Thread: Function returning First /Second etc

  1. #1
    sarun
    Guest

    Function returning First /Second etc

    Is there a function that returns the words First /Second etc when a number is passed as an input

    Example:
    FuncX(1) = "First"
    FuncX(9) = "Ninth"

    Or does it need to be done the hard way - manually declaring and retrieving?

  2. #2
    Megatron
    Guest
    Unfortunately, it has to be done the hard way.

  3. #3
    Hyperactive Member techman2553's Avatar
    Join Date
    Mar 2001
    Location
    <- To your left.
    Posts
    362
    Updated: (Ten Hundred Just Didn't Sound Right?!?)

    Here you go...

    This may be a bit overkill, but this will convert any number between 0 and 99999 to a sentance. If you set the "First" argument in the function, it will return words like "First, Second, Third", if you set to false then you will get "One, Two, Three"

    Try This:
    - Open a new project in VB
    - Add 2 TextBoxes (Text1,Text2)
    - Add a Command Button (Command1)
    - Copy the code below to the form

    Code:
    Private Sub Form_Load()
      Text1.Text = "Enter Number Here"
      Text2.Text = ""
    End Sub
    
    Private Sub Command1_Click()
      Text2.Text = GetNumberName(Val(Text1.Text), True)
    End Sub
    
    Private Function GetNumberName(Number As Long, First As Boolean) As String
      'Test If Zero
      If Number <= 0 Then
        GetNumberName = "Zero"
        Exit Function
      End If
      If Number > 99999 Then
        GetNumberName = "Too Big"
        Exit Function
      End If
      'Build Ten Thousand Prefix
      If Number >= 10000 Then
        If ((Number / 1000) = (Int(Number / 1000))) Then
          If First Then
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousandth"
            Exit Function
          Else
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousand"
            Exit Function
          End If
        Else
          GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousand "
          Number = Number Mod 1000
        End If
      End If
      'Build Thousand Prefix
      If Number >= 1000 Then
        If ((Number / 1000) = (Int(Number / 1000))) Then
          If First Then
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousandth"
            Exit Function
          Else
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousand"
            Exit Function
          End If
        Else
          GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 1000), False) & " Thousand "
          Number = Number Mod 1000
        End If
      End If
      'Build Hundred Prefix
      If Number >= 100 Then
        If ((Number / 100) = (Int(Number / 100))) Then
          If First Then
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 100), False) & " Hundredth"
            Exit Function
          Else
            GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 100), False) & " Hundred"
            Exit Function
          End If
        Else
          GetNumberName = GetNumberName & BuildDigitNames(Int(Number / 100), False) & " Hundred And "
          Number = Number Mod 100
        End If
      End If
      'Build Number Suffix
      If Number < 100 Then
        GetNumberName = GetNumberName & BuildDigitNames(Number, First)
        Exit Function
      End If
    End Function
    
    Private Function BuildDigitNames(Number As Long, First As Boolean) As String
      Dim FirstNames As Variant
      Dim OneNames As Variant
      Dim TenNames As Variant
      Dim TenthNames As Variant
      OneNames = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
      FirstNames = Array("", "First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth", "Ninth", "Tenth", "Eleventh", "Twelfth", "Thirteenth", "Fourteenth", "Fifteenth", "Sixteenth", "Seventeenth", "Eighteenth", "Nineteenth")
      TenNames = Array("", "Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
      TenthNames = Array("", "Tenth", "Twentieth", "Thirtieth", "Fourtieth", "Fiftieth", "Sixtieth", "Seventieth", "Eightieth", "Ninetieth")
      Select Case Number
        Case 0 To 19
          If First Then
            BuildDigitNames = FirstNames(Number)
          Else
            BuildDigitNames = OneNames(Number)
          End If
        Case 20, 30, 40, 50, 60, 70, 80, 90
          If First Then
            BuildDigitNames = TenthNames(Number / 10)
          Else
            BuildDigitNames = TenNames(Number / 10)
          End If
        Case 21 To 29, 31 To 39, 41 To 49, 51 To 59, 61 To 69, 71 To 79, 81 To 89, 91 To 99
          If First Then
            BuildDigitNames = TenNames(Int(Number / 10)) & "-" & FirstNames(Number Mod 10)
          Else
            BuildDigitNames = TenNames(Int(Number / 10)) & "-" & OneNames(Number Mod 10)
          End If
      End Select
    End Function
    Last edited by techman2553; May 9th, 2001 at 11:48 PM.
    ----------

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width