Publicado en Programacion, VB. NET, Visual Basic 6

Como convertir números a letras en Visual Basic .NET

He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el año 2000 alguién que no recuerdo su nombre envío el siguiente algoritmo para VB 6.0 para realizar dicha conversión…. ha sido unos de los mejores que he visto.. a continuación se los adjunto, espero que también les puedan servir.

Sirve tanto para VB 6.0 como para Visual Basic .NET

[ACTUALIZACION 02-09-2014]: se modifico el post y se uso el sourcecode para deplegar mejor el codigo.

Public Function Num2Text(ByVal value As Double) As String
Select Case value
Case 0 : Num2Text = "CERO"
Case 1 : Num2Text = "UN"
Case 2 : Num2Text = "DOS"
Case 3 : Num2Text = "TRES"
Case 4 : Num2Text = "CUATRO"
Case 5 : Num2Text = "CINCO"
Case 6 : Num2Text = "SEIS"
Case 7 : Num2Text = "SIETE"
Case 8 : Num2Text = "OCHO"
Case 9 : Num2Text = "NUEVE"
Case 10 : Num2Text = "DIEZ"
Case 11 : Num2Text = "ONCE"
Case 12 : Num2Text = "DOCE"
Case 13 : Num2Text = "TRECE"
Case 14 : Num2Text = "CATORCE"
Case 15 : Num2Text = "QUINCE"
Case Is < 20 : Num2Text = "DIECI" & Num2Text(value – 10)
Case 20 : Num2Text = "VEINTE"
Case Is < 30 : Num2Text = "VEINTI" & Num2Text(value – 20)
Case 30 : Num2Text = "TREINTA"
Case 40 : Num2Text = "CUARENTA"
Case 50 : Num2Text = "CINCUENTA"
Case 60 : Num2Text = "SESENTA"
Case 70 : Num2Text = "SETENTA"
Case 80 : Num2Text = "OCHENTA"
Case 90 : Num2Text = "NOVENTA"
Case Is < 100 : Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)
Case 100 : Num2Text = "CIEN"
Case Is < 200 : Num2Text = "CIENTO " & Num2Text(value – 100)
Case 200, 300, 400, 600, 800 : Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"
Case 500 : Num2Text = "QUINIENTOS"
Case 700 : Num2Text = "SETECIENTOS"
Case 900 : Num2Text = "NOVECIENTOS"
Case Is < 1000 : Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)
Case 1000 : Num2Text = "MIL"
Case Is < 2000 : Num2Text = "MIL " & Num2Text(value Mod 1000)
Case Is < 1000000 : Num2Text = Num2Text(Int(value \ 1000)) & " MIL"
If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)
Case 1000000 : Num2Text = "UN MILLON"
Case Is < 2000000 : Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)
Case Is < 1000000000000.0# : Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "
If (value – Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value – Int(value / 1000000) * 1000000)
Case 1000000000000.0# : Num2Text = "UN BILLON"
Case Is < 2000000000000.0# : Num2Text = "UN BILLON " & Num2Text(value – Int(value / 1000000000000.0#) * 1000000000000.0#)
Case Else : Num2Text = Num2Text(Int(value / 1000000000000.0#)) & " BILLONES"
If (value – Int(value / 1000000000000.0#) * 1000000000000.0#) Then Num2Text = Num2Text & " " & Num2Text(value – Int(value / 1000000000000.0#) * 1000000000000.0#)
End Select

End Function	

Fuente:
Convertir numero en letras

22 comentarios sobre “Como convertir números a letras en Visual Basic .NET

  1. hola la verdad soy nueva en este programa despues de este codigo q elementos agrego en el form1 , si alguine podria ayudarme o orientame por favor
    y gracias de antemano

  2. Haciendo pruebas encontre la manera de incluir los decimales en el algoritmo es bien sencillo, existen mas formas de hacerlo, eso lo sabemos pero aki esta una para los ke no kieren dar muxas vueltas.

    Function Num2Text(ByVal Value As Decimal) As String
    Dim valores() As String
    Dim valor As String = Value
    Dim entero As Decimal = 0
    Dim fraccion As Decimal = 0

    If valor.Contains(“.”) OrElse valor.Contains(“,”) Then
    valores = Split(valor, “.”)
    Value = CDec(valores(0))

    If valores.Length > 1 Then
    fraccion = CDec(valores(1))
    End If
    End If

    ##Algoritmo ya posteado………

    y al final agregamos lo siguiente.

    If fraccion 0 Then
    Num2Text = Num2Text & ” CON ” & Num2Text(CDec(fraccion))
    End If

    End Function

    Hemos hecho prueba y nos funciona. Cualkier aporte comentario o modificacion sera bueno, para crecer.

    jeje.

    1. amigo al final dice:
      If fraccion 0 Then
      Num2Text = Num2Text & ” CON ” & Num2Text(CDec(fraccion))
      End If

      End Function

      pero sale un herror con “0 then”

    2. hola me da error en dim valor as string = value y Excepción no controlada del tipo ‘System.StackOverflowException’ en Microsoft.VisualBasic.dll
      por favor podrias ayudarme

  3. hola estoy acuiendo un sistema de facturacion estoy utilizando visual basic pero me ace falta codigo para terminarlo y tambien quiero acer devoluciones si alquien me puede ayudar se lo agradecere muchisimo gracias..

  4. Hola
    Si bien es un blog viejo me sirvio de mucho. Hasta ahora estaba trabajando con una rutina que hice por los años 90 en Basic. Pero ahora aprovecho que estoy pasando a .net y esto fue un gran aporte
    Gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s