Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

excel vba number to words

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


        

Post a Comment