none
convertir numeros en letras con todo y punto decimal en vb.net RRS feed

  • Pregunta

  • Buenas tardes: quisiera ver si me pueden ayudar a convertir una cantidad en letras tengo

    el siguiente codigo todo funciona bien pero tambien quiero convertir los deciamles osea

    210.32 y me ponda hasta 210 y tambien me dida con treinta y dos centavos...ayuda plis!

        Public Function Letras(ByVal numero As String) As String

            Dim palabras, entero, dec, flag As String

            Dim num, x, y As Integer

            flag = "N"

            If Mid(numero, 1, 1) = "-" Then

                numero = Mid(numero, 2, numero.ToString.Length - 1).ToString

                palabras = "menos "

            End If

     

            For x = 1 To numero.ToString.Length

                If Mid(numero, 1, 1) = "0" Then

                    numero = Trim(Mid(numero, 2, numero.ToString.Length).ToString)

                    If Trim(numero.ToString.Length) = 0 Then palabras = ""

                Else

                    Exit For

                End If

            Next

            For y = 1 To Len(numero)

                If Mid(numero, y, 1) = "." Then

                    flag = "S"

                Else

                    If flag = "N" Then

                        entero = entero + Mid(numero, y, 1)

                    Else

                        dec = dec + Mid(numero, y, 1)

                    End If

                End If

            Next y

            If Len(dec) = 1 Then dec = dec & "0"

            flag = "N"

            If Val(numero) <= 999999999 Then

                For y = Len(entero) To 1 Step -1

                    num = Len(entero) - (y - 1)

                    Select Case y

                        Case 3, 6, 9

                            Select Case Mid(entero, num, 1)

                                Case "1"

                                    If Mid(entero, num + 1, 1) = "0" And Mid(entero, num + 2, 1) = "0" Then

                                        palabras = palabras & "cien "

                                    Else

                                        palabras = palabras & "ciento "

                                    End If

                                '*hasta el 9

                                Case "9"

                                    palabras = palabras & "novecientos "

                            End Select

                        Case 2, 5, 8

                            Select Case Mid(entero, num, 1)

                                Case "1"

                                    If Mid(entero, num + 1, 1) = "0" Then

                                        flag = "S"

                                        palabras = palabras & "diez "

                                    End If

                                    If Mid(entero, num + 1, 1) = "1" Then

                                        flag = "S"

                                        palabras = palabras & "once "

                                    End If

                                   

                                    If Mid(entero, num + 1, 1) > "5" Then

                                        flag = "N"

                                        palabras = palabras & "dieci"

                                    End If

                                Case "2"

                                    If Mid(entero, num + 1, 1) = "0" Then

                                        palabras = palabras & "veinte "

                                        flag = "S"

                                    Else

                                        palabras = palabras & "veinti"

                                        flag = "N"

                                    End If

                               

                                Case "9"

                                    If Mid(entero, num + 1, 1) = "0" Then

                                        palabras = palabras & "noventa "

                                        flag = "S"

                                    Else

                                        palabras = palabras & "noventa y "

                                        flag = "N"

                                    End If

                            End Select

                        Case 1, 4, 7

                            Select Case Mid(entero, num, 1)

                                Case "1"

                                    If flag = "N" Then

                                        If y = 1 Then

                                            palabras = palabras & "uno "

                                        Else

                                            palabras = palabras & "un "

                                        End If

                                    End If

                                Case "2"

                                    If flag = "N" Then palabras = palabras & "dos "

                                Case "3"

                                    If flag = "N" Then palabras = palabras & "tres "

                                Case "4"

                                    If flag = "N" Then palabras = palabras & "cuatro "

                                Case "5"

                                    If flag = "N" Then palabras = palabras & "cinco "

                                Case "6"

                                    If flag = "N" Then palabras = palabras & "seis "

                                Case "7"

                                    If flag = "N" Then palabras = palabras & "siete "

                                Case "8"

                                    If flag = "N" Then palabras = palabras & "ocho "

                                Case "9"

                                    If flag = "N" Then palabras = palabras & "nueve "

                            End Select

                    End Select

                    If y = 4 Then

                        If Mid(entero, 6, 1) <> "0" Or Mid(entero, 5, 1) <> "0" Or Mid(entero, 4, 1) <> "0" Or _

                        (Mid(entero, 6, 1) = "0" And Mid(entero, 5, 1) = "0" And Mid(entero, 4, 1) = "0" And _

                        Len(entero) <= 6) Then palabras = palabras & "mil "

                    End If

                    If y = 7 Then

                        If Len(entero) = 7 And Mid(entero, 1, 1) = "1" Then

                            palabras = palabras & "millón "

                        Else

                            palabras = palabras & "millones "

                        End If

                    End If

                Next y

                If dec <> "" Then

                    If palabras = "" Then

                        Letras = "CERO PESOS 00/100 M.N."

                    Else

                    End If

                    Dim AuxDec As String

                    If dec.Length > 2 Then

                        AuxDec = Mid(dec, 2, 1)

                        Letras = palabras & " PESOS " & AuxDec & "/100 M.N."

                    Else

                        Letras = palabras & " PESOS " & dec & "/100 M.N."

                    End If

                Else

                End If

                If palabras = "" Then

                    Letras = "CERO PESOS 00/100 M.N."

                Else

                    Letras = palabras & " PESOS 00/100 M.N."

                End If

            End If

        End Function

    lunes, 7 de abril de 2014 19:16

Respuestas

Todas las respuestas

  • porque no evaluas usar

    Convertir N ú mero a Letras en VB.Net

    Numalet: convertir n ú meros a letras en C# y VB

    librerias ya existentes para hacer esto que planteas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 7 de abril de 2014 19:30
  • listo lo soluciones solo era cuestión de ver los comentarios al final

                '**********Une la parte entera y la parte decimal*************

                If dec <> "" Then

                    Letras = palabras & "pesos &" & dec & "/100 m.n."

                Else

                    Letras = palabras & "pesos"

                End If

            Else

                Letras = ""

            End If

    lunes, 7 de abril de 2014 23:08
  • TU CODIGO ESTA MAL, NO LLE (10 001)  NO LE PONE LA UNIDAD

    viernes, 27 de julio de 2018 15:09
  • Muy Buen Codigo Me srivio Para un Aplicativo de Facturación que estoy realizando le hice algunos cambios y lo comparto.

      Public Function Letras(ByVal numero As String) As String
            Dim palabras, entero, dec, flag As String
            Dim num, x, y As Integer
            flag = "N"
            If Mid(numero, 1, 1) = "-" Then
                numero = Mid(numero, 2, numero.ToString.Length - 1).ToString
                palabras = "menos "
            End If
            For x = 1 To numero.ToString.Length
                If Mid(numero, 1, 1) = "0" Then
                    numero = Trim(Mid(numero, 2, numero.ToString.Length).ToString)
                    If Trim(numero.ToString.Length) = 0 Then palabras = ""
                Else
                    Exit For
                End If
            Next
            For y = 1 To Len(numero)
                If Mid(numero, y, 1) = "." Then
                    flag = "S"
                Else
                    If flag = "N" Then
                        entero = entero + Mid(numero, y, 1)
                    Else
                        dec = dec + Mid(numero, y, 1)
                    End If
                End If
            Next y
            Dim enterocn As Integer
            entero = (entero.Replace(",".ToString, "".ToString))

            If Len(dec) = 1 Then dec = dec & "0"
            flag = "N"
            If Val(numero) <= 999999999 Then
                For y = Len(entero) To 1 Step -1
                    num = Len(entero) - (y - 1)
                    Select Case y
                        Case 3, 6, 9
                            Select Case Mid(entero, num, 1)
                                Case "1"
                                    palabras = palabras & "Ciento "
                                Case "2"
                                    palabras = palabras & "Doscientos "
                                Case "3"
                                    palabras = palabras & "Trescientos "

                                Case "4"
                                    palabras = palabras & "Cuatrocientos "
                                Case "5"
                                    palabras = palabras & "Quinientos "
                                Case "6"
                                    palabras = palabras & "Seiscientos "
                                Case "7"
                                    palabras = palabras & "Setecientos "
                                Case "8"
                                    palabras = palabras & "Ochocientos "
                                '*hasta el 9
                                Case "9"
                                    palabras = palabras & "Novecientos "
                            End Select
                        Case 2, 5, 8
                            Select Case Mid(entero, num, 1)
                                Case "1"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        flag = "S"
                                        palabras = palabras & "Diez "
                                    End If
                                    If Mid(entero, num + 1, 1) = "1" Then
                                        flag = "S"
                                        palabras = palabras & "Once "
                                    End If
                                    If Mid(entero, num + 1, 1) = "2" Then
                                        flag = "S"
                                        palabras = palabras & "Doce "
                                    End If
                                    If Mid(entero, num + 1, 1) = "3" Then
                                        flag = "S"
                                        palabras = palabras & "Trece "
                                    End If
                                    If Mid(entero, num + 1, 1) = "4" Then
                                        flag = "S"
                                        palabras = palabras & "Catorce "
                                    End If
                                    If Mid(entero, num + 1, 1) = "5" Then
                                        flag = "S"
                                        palabras = palabras & "Quince "
                                    End If
                                    If Mid(entero, num + 1, 1) > "5" Then
                                        flag = "N"
                                        palabras = palabras & "Dieci"
                                    End If
                                Case "2"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Veinte "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Veinti"
                                        flag = "N"
                                    End If
                                Case "3"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Treinta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Treinta y "
                                        flag = "N"
                                    End If
                                Case "4"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Cuarenta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Cuarenta y "
                                        flag = "N"
                                    End If
                                Case "5"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Cincuenta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Cincuenta y "
                                        flag = "N"
                                    End If
                                Case "6"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Sesenta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Sesenta y "
                                        flag = "N"
                                    End If
                                Case "7"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Setenta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Setenta y "
                                        flag = "N"
                                    End If
                                Case "8"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Ochenta "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Ochenta y "
                                        flag = "N"
                                    End If
                                Case "9"
                                    If Mid(entero, num + 1, 1) = "0" Then
                                        palabras = palabras & "Noventa "
                                        flag = "S"
                                    Else
                                        palabras = palabras & "Noventa y "
                                        flag = "N"
                                    End If
                            End Select
                        Case 1, 4, 7
                            Select Case Mid(entero, num, 1)
                                Case "1"
                                    If flag = "N" Then
                                        If y = 1 Then
                                            palabras = palabras & "Uno "
                                        Else
                                            palabras = palabras & "Un "
                                        End If
                                    End If
                                Case "2"
                                    If flag = "N" Then palabras = palabras & "Dos "
                                Case "3"
                                    If flag = "N" Then palabras = palabras & "Tres "
                                Case "4"
                                    If flag = "N" Then palabras = palabras & "Cuatro "
                                Case "5"
                                    If flag = "N" Then palabras = palabras & "Cinco "
                                Case "6"
                                    If flag = "N" Then palabras = palabras & "Seis "
                                Case "7"
                                    If flag = "N" Then palabras = palabras & "Siete "
                                Case "8"
                                    If flag = "N" Then palabras = palabras & "Ocho "
                                Case "9"
                                    If flag = "N" Then palabras = palabras & "Nueve "
                            End Select
                    End Select
                    If y = 4 Then
                        If Mid(entero, 6, 1) <> "0" Or Mid(entero, 5, 1) <> "0" Or Mid(entero, 4, 1) <> "0" Or
                        (Mid(entero, 6, 1) = "0" And Mid(entero, 5, 1) = "0" And Mid(entero, 4, 1) = "0" And
                        Len(entero) <= 6) Then palabras = palabras & "Mil "
                    End If
                    If y = 7 Then
                        If Len(entero) = 7 And Mid(entero, 1, 1) = "1" Then
                            palabras = palabras & "Millón "
                        Else
                            palabras = palabras & "Millones "
                        End If
                    End If
                Next y

                If palabras = "" Then
                    Letras = "CERO Lempiras Exactos"
                Else
                    If dec <> "" Then
                        Dim AuxDec As String
                        If dec.Length > 2 Then
                            AuxDec = Mid(dec, 2, 1)
                            Letras = palabras & " Lempiras " & " Con " & AuxDec & "/100"
                        Else
                            Letras = palabras & " Lempiras " & " Con " & dec & "/100"
                        End If
                    Else
                        Letras = palabras & " Lempiras Exactos"
                    End If
                End If
                Txtvaletras.Text = Letras
            End If
        End Function
        Public Sub resolver()
            Letras(Dgvtotales.Item(0, 2).Value)
        End Sub

    jueves, 25 de abril de 2019 3:17
  • Hola Jeffry Madrid muy Contento de Saludarte

    Mira tengo Tres DataGridview uno que da la Fecha de la Factura el otro que es el que maneja los valores que le ingresan a la Factura y el tercero con los Totales de la factura.
    Use el Codigo que tenia esta pagina y lo modifique a nuestra moneda y agregue unas cosas que faltaban.
    Mi Data GridViewTotales quería convertir el valor Total en lempiras que esta en la columna cero y la fila 2
    y que el resultado en letras me lo despliegue en un Textbox puede ser también en un Label. para eso creas la function que agregue en la pagina y luego creas el private sub así como lo puse en el código
    de ahi solo lo llamas de cualquier evento que deseas llamarlo para que te realice el calculo como por ejemplo un botón o algo que active la función mediante mi public sub resolver que es el que le envía los valores del data a la función si mi numero estuviese en un text mi public sub cambiaria así
        Public Sub resolver()
            Letras(Txtnombredeltext.text)
        End Sub

    que esto básicamente lo que hace es transmitir en valor del objeto text o un data del objeto que estas jalando el valor en números
    y lo activas del botón o del evento que lo quieras activar
    en mi caso yo lo activo cuando los valores de mi data donde ingreso valores de la factura cambian
    en el evento cellvaluechange
    espero que esto te sirva y si tienes alguna otra consulta con gusto te ayudo

    Saludos Gerardo Godoy Tegucigalpa

    Te dejo mi Móvil Por si deseas Consultarme via WhatsApp 99404469


    jueves, 25 de abril de 2019 6:01
  • Gracias Gerardo, entendí bien tu explicación ya lo implemente y funcionó perfectamente.

    Respecto a esta duda me fue de gran ayuda tu código, seria bueno poder seguir intercambiando conocimientos acerca de nuestros proyectos para ver en que nos podemos ayudar. 

       
    sábado, 27 de abril de 2019 22:54
  • En este video aprendí como hacerlo, en la descripcion se puede descargar el proyecto , por si gustan checkearlo.

    link: https://www.youtube.com/watch?v=GThaZPLJq_k&t=17s este link es en C#, si lo desean en Vb.net el link sería el siguiente: https://www.youtube.com/watch?v=HUXNFe0LkG8
    viernes, 13 de noviembre de 2020 5:06