Saludos:

Creo que esta funcion ayudara o dara luz para otras mejores.

Código:
Public Function Fn_NumerosALetras(ByVal MyNumber As String) As String
        Dim Dollars As String = ""
        Dim Cents As String = ""
        Dim Temp As String = ""
        Dim DecimalPlace, Count As Integer
        Dim Place(9) As String
        Place(2) = " Thousand "
        Place(3) = " Million "
        Place(4) = " Billion "
        Place(5) = " Trillion "
        ' String representation of amount.
        MyNumber = Trim(Str(MyNumber))
        ' Position of decimal place 0 if none.
        DecimalPlace = InStr(MyNumber, ".")
        ' Convert cents and set MyNumber to dollar amount.
        If DecimalPlace > 0 Then
            Cents = Fn_GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
            "00", 2))
            MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
        End If
        Count = 1
        Do While MyNumber <> ""
            Temp = Fn_GetHundreds(Right(MyNumber, 3))
            If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
            If Len(MyNumber) > 3 Then
                MyNumber = Left(MyNumber, Len(MyNumber) - 3)
            Else
                MyNumber = ""
            End If
            Count = Count + 1
        Loop
        Select Case Dollars
            Case ""
                Dollars = "No Dollars"
            Case "One"
                Dollars = "One Dollar"
            Case Else
                Dollars = Dollars & " Dollars"
        End Select
        Select Case Cents
            Case ""
                Cents = " and No Cents"
            Case "One"
                Cents = " and One Cent"
            Case Else
                Cents = " and " & Cents & " Cents"
        End Select
        Fn_NumerosALetras = Dollars & Cents
        Return Fn_NumerosALetras
    End Function

    '----------------------------------------------------------
    ' Converts a number from 100-999 into text 
    '----------------------------------------------------------
    Function Fn_GetHundreds(ByVal MyNumber As String) As String
        Dim Result As String = ""
        If Val(MyNumber) = 0 Then : Return "" : Exit Function : End If
        MyNumber = Right("000" & MyNumber, 3)
        ' Convert the hundreds place.
        If Mid(MyNumber, 1, 1) <> "0" Then
            Result = Fn_GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
        End If
        ' Convert the tens and ones place.
        If Mid(MyNumber, 2, 1) <> "0" Then
            Result = Result & Fn_GetTens(Mid(MyNumber, 2))
        Else
            Result = Result & Fn_GetDigit(Mid(MyNumber, 3))
        End If
        Fn_GetHundreds = Result
    End Function

    '----------------------------------------------------------
    ' Converts a number from 10 to 99 into text. 
    '----------------------------------------------------------
    Function Fn_GetTens(ByVal TensText As String) As String
        Dim Result As String
        Result = ""           ' Null out the temporary function value.
        If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
            Select Case Val(TensText)
                Case 10 : Result = "Ten"
                Case 11 : Result = "Eleven"
                Case 12 : Result = "Twelve"
                Case 13 : Result = "Thirteen"
                Case 14 : Result = "Fourteen"
                Case 15 : Result = "Fifteen"
                Case 16 : Result = "Sixteen"
                Case 17 : Result = "Seventeen"
                Case 18 : Result = "Eighteen"
                Case 19 : Result = "Nineteen"
                Case Else
            End Select
        Else                                 ' If value between 20-99...
            Select Case Val(Left(TensText, 1))
                Case 2 : Result = "Twenty "
                Case 3 : Result = "Thirty "
                Case 4 : Result = "Forty "
                Case 5 : Result = "Fifty "
                Case 6 : Result = "Sixty "
                Case 7 : Result = "Seventy "
                Case 8 : Result = "Eighty "
                Case 9 : Result = "Ninety "
                Case Else
            End Select
            Result = Result & Fn_GetDigit _
            (Right(TensText, 1))  ' Retrieve ones place.
        End If
        Fn_GetTens = Result
    End Function

    '----------------------------------------------------------
    ' Converts a number from 1 to 9 into text. 
    '----------------------------------------------------------
    Function Fn_GetDigit(ByVal Digit As String) As String
        Select Case Val(Digit)
            Case 1 : Fn_GetDigit = "One"
            Case 2 : Fn_GetDigit = "Two"
            Case 3 : Fn_GetDigit = "Three"
            Case 4 : Fn_GetDigit = "Four"
            Case 5 : Fn_GetDigit = "Five"
            Case 6 : Fn_GetDigit = "Six"
            Case 7 : Fn_GetDigit = "Seven"
            Case 8 : Fn_GetDigit = "Eight"
            Case 9 : Fn_GetDigit = "Nine"
            Case Else : Fn_GetDigit = ""
        End Select
    End Function
Espero ayude.



JOSE LUIS