Trucos de Visual Basic.NET Como convertir números a letras


Como convertir números a letras


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

 

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


Comentarios sobre Como convertir números a letras


fabian dice:

que excelente forma de ocupar la recursividad, se paso , excelente idea, creo q hay lenguajes q tienen un conversar directo, pero a falta de akello, esta función está genial
Comentario publicado 29/01/2010 17:51:00

Matias Vidoni dice:

Funciona excelente. Muchas gracias!!!
Comentario publicado 02/04/2010 21:50:00

Marcos Alonso dice:

Excelente!... ya imaginaba yo que debia aprovecharse la recursividad, simplemente lo puse y funcionó. muchas felicidades!!
Comentario publicado 06/04/2010 21:24:00

Pamela dice:

Hola donde codifico esto.....
Comentario publicado 13/04/2010 16:55:00

William dice:

hola soi nuevo en esto y no se donde codificar el codigo ??? porque inserte 2 textbox y 1 boton, puse el codigo en el botton y le cambie el nombre a un textbox para q se llamara Num2text. pero ala hora de correr el programa me tira erro en los value y no se porque!! me podrian ayudar ?? se los agradeceria mucho...
Comentario publicado 21/05/2010 21:20:00

lalo dice:

william: en tu visual 6 pega la funcion tal como esta y quitale el punto y coma de las lineas que tienen Case Is <; <-- este pon un textbox llamado text1 y pon otro llamado text2 pon un boton y ponle lo siguiente: Text2 = Num2Text(Text1) ejecuta el programa y escribe por ejemplo 1500 en el text1 y dale al boton, en el text2 te deberia poner MIL QUINIENTOS PESOS
Comentario publicado 29/05/2010 1:27:00

Jose dice:

pero en el visual 2005 cambia no porque el codigo del boton me marca que no es posible utilizar un tipo double o string en system.windows.form
Comentario publicado 29/05/2010 6:18:00

peter dice:

mmmmmm...... y eso incluye tambien para numeros con decimales¿?
Comentario publicado 02/06/2010 2:27:00

Jonathan dice:

Tengo el mismo problema que willian pero para visual basic 2008 (el de visual studio 2008) y pongo lo que dijiste de los nombres de los textbox pero no me sale!!!!!
Comentario publicado 29/06/2010 23:22:00

IngPhoenix dice:

Buen aporte, muchas gracias
Comentario publicado 01/07/2010 7:24:00

victor dice:

trabajo en visual vb asp .net 2005 y no se en que parte agrego el codigo, ya probe de varias opciones me da error pero tampoco me aloja ningun resultado, me urge,, gracias
Comentario publicado 27/07/2010 20:06:00

clipero dice:

chingaderas
Comentario publicado 27/08/2010 20:59:00
Dejar un comentario

Nombre:

Mail:

Web:

Comentario: