MSMVPS.COM
The Ultimate Destination for Blogs by Current and Former Microsoft Most Valuable Professionals.

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

End Function


Posted Mon, Aug 29 2005 10:02 by jvargas

Comments

jvargas wrote re: Como convertir números a letras
on Thu, Sep 22 2005 10:36
existen versiones de este codigo para otros lenguajes, como javascript o asp (no .net)?
jvargas wrote re: Como convertir números a letras
on Fri, Oct 28 2005 14:59
codigo de convertir numero a letras
jvargas wrote re: Como convertir números a letras
on Thu, Nov 3 2005 19:12
como convierto de decimales a romanos pero hasta el 9999999 de los romanos
y como ponerle la rayita que lleva arriba la m del millon


si me puedes ayudar te lo agradecere

saludos gracias
fidel wrote re: Como convertir n&#250;meros a letras
on Tue, May 30 2006 18:22
hola excelente la funcion pero deseo fuera con decimales si me lo puedes enviar a fimacoi@yahoo.com
Alfonso wrote re: Como convertir n&#250;meros a letras
on Mon, Jun 12 2006 18:44
Muy buen codigo Jhonny.

Gracias por tu aporte.

Saludos

alfonlt@hotmail.com
 
--------
 
De nada estimado... Gracias por tus comentarios,
Jhonny Vargas P.
 
 
DanRiv wrote re: Como convertir n&#250;meros con decimales a letras
on Mon, Jun 12 2006 23:28
En agradecimiento a este artículo, publico el complemento con respecto al uso de un numero con decimales en vb.Net, espero sus comentarios en mi sitio.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim largo = Len(CStr(Format(CDbl(tnumero.Text), "#,###.00")))

       Dim decimales = Mid(CStr(Format(CDbl(tnumero.Text), "#,###.00")), largo - 2)

       tletras.Text = Num2Text(tnumero.Text - decimales) & "  " & Mid(decimales, Len(decimales) - 1) & "/100" & "  DOLARES."

   End Sub
 
 
----
Muchas gracias por tu código,
 
Saludos,
Jhonny Vargas P.
jose wrote como ejecuto esta funcion
on Tue, Jul 18 2006 14:15
como ejecuto esta funcion en visual
EleAEse wrote re: Como convertir n&#250;meros a letras
on Wed, Aug 9 2006 19:51
Buen código, me sirvió perfectamente.

Para el caso de números con decimales, una leve variación al caso previo, con truncado.

Saludos,

EleAEse

Public Function NumeroATexto(ByVal d As Double) As String
Dim parteEntera As Double = Math.Truncate(d)
Dim parteDecimal As Double = Math.Truncate((d - _parteEntera) * 100)

If (parteDecimal > 0) Then
return Num2Text(parteEntera) + " CON " Num2Text(parteDecimal) + " CENTAVOS"
Else
return Num2Text(parteEntera)
End if
end if
Jesus wrote re: Como convertir n&#250;meros a letras
on Sun, Sep 17 2006 21:38
Falló con decimales
joab melgar wrote re: Como convertir n&#250;meros a letras
on Sat, Oct 28 2006 12:30
gracias por la funcion me sirviomucho
cecy wrote re: Como convertir números a letras
on Mon, Nov 27 2006 11:55

yo no le entendi nada al codigo :(, no me funciono, donde meto la funcion?? en un boton??

jvargas wrote re: Como convertir números a letras
on Mon, Nov 27 2006 18:59

En un formulario, en un modulo, en un módulo de clases, donde tu quieras.

Mario wrote re: Como convertir números a letras
on Tue, Nov 28 2006 7:00

Me vino genial el codigo, y muchas gracias tambien a EleAEse por la parte decimal, es justo lo que necesitaba.

Contestando a cecy, las funciones no son para ejecutarlas directamente, tienes que llamar a ellas, un ejemplo.

Copia todo el codigo en cualquier parte como dijo jvargas, crea un TextBox y ahora si en un boton escribe:

TextBox1.Text = Num2Text(numero)

Eso escribira en el textbox el resultado de la funcion de Num2Text, las letras vaya... en numero obviamente tienes que poner un numero cualquiera o se lo pasas por otro textbox

Saludos

Michael v wrote como convertir números a letras
on Thu, Nov 30 2006 17:21

procedimiento para convertir números a letras en VISUAL BASIC 5.0

benja wrote re: Como convertir números a letras
on Wed, Dec 20 2006 13:10

que referencias debo usar para el math.truncate??

victor wrote otra variante esto en vb 5
on Thu, Dec 28 2006 3:07

GRACIAS POR EL CODIGO SOLO AGREGUE ESTO Y LISTO

Private Sub Command1_Click()

Dim vic As String

vic = Right(CStr(Format(Text1.Text, "$#,##0.#0;($#,##0)")), 2)

Text2.Text = "(" & Num2Text(Val(Text1.Text)) & " PESOS " & vic & "/100" & " MN)"

End Sub

jvargas wrote re: Como convertir números a letras
on Mon, Jan 1 2007 16:12

Eso... que bueno que les sirva.

victor wrote re: Como convertir números a letras
on Wed, Jan 10 2007 13:46

Convertir nros a letras: Por favor si pueden considerar que el que pregunta, no sabe nada, podrian explicarlo paso a paso como se haria en un formulario(facturacion)de access por ejemplo, que a medida que vaya cambiando el valor de la factura, cambie la conversion..gracias.

*** wrote re: Como convertir números a letras
on Fri, Jan 19 2007 15:11

Muy bueno el código. Gracias

Se me ocurrió otra forma de hacer lo de los decimales, redondea si d tiene más de dos decimales.

Dim d As Double = 123.30

Dim i As Integer = Math.Floor(d)

Dim r As Integer = CInt((d - i) * 100)

rtbTexto.Text = Num2Text(i) & " CON " &  Num2Text(r) & " CENTIMOS"

Jorge wrote re: Como convertir números a letras
on Sun, Feb 25 2007 11:47

El codigo es genial .. pero yo tuve problemas al tratar de convertir numeros pequeños con decimales (ejem:23.23).. como yo lo solucione es que debajo de esta linea

Public Function Num2Text(ByVal value As Double) As String

Puse

value=int(value)

Por lo demas esta muy bien pensado el codigo.

Se que es poco probable que alguien facture cantidades pequeñas, pero creo que con esto queda completo.

Saludos

juarang wrote re: Como convertir números a letras
on Wed, Mar 14 2007 10:54

hola.

primero agradecer por el codigo esta excelente

solo un detalle me serviria un monton si al final saliera "PESOS"

pero realmente nose como hacerlo

te agradeceria si me lo pudieras explicar

saludos

y gracias

juan jose obregon cajina wrote re: Como convertir números a letras
on Tue, Mar 20 2007 16:44

Mil gracias, funciona de maravilla y me saco de una emergencia.

Jenni wrote Como convertir números a letras
on Sat, Apr 21 2007 23:00

Hola muchísimas gracias por el código y todos los tips!.. son Cheverisimos!.. Aqúí les dejo un ejemplo de como lo arme!!.. :)

Private Sub txtmon_LostFocus()

Dim sValor As String, siValor As Single

Dim i, r As Single

sValor = txtmon

txtmon = Val(Replace(sValor, ",", "."))

i = Int(Val(txtmon))

r = CInt((txtmon - i) * 100)

Num2Text (Val(txtmon))

If r > 0 Then

txtmonl = txtmonl.Text & " CON " + Num2Text(r) + " CENTIMOS"

End If

txtmon = Format(txtmon, "currency")

End Sub

Public Function Num2Text(ByVal value As Double) As String

value = Int(value)

   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#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

           If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

       Case 1000000000000#: Num2Text = "UN BILLON"

       Case Is < 2000000000000#: Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

       Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"

           If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

   End Select

If value = 1 Then

 txtmonl = Num2Text + " BOLÍVAR"

Else

 txtmonl = Num2Text + " BOLÍVARES"

End If

End Function

                  ..::Fino verdad??::..

gabriel wrote re: Como convertir números a letras
on Tue, Apr 24 2007 20:14

gracias me sirvio bastante el codigo

Roberto wrote re: Como convertir números a letras
on Sun, May 6 2007 18:53

Alguien tiene el codigo ya convertido para C#

venom_aa wrote re: Como convertir números a letras
on Wed, May 16 2007 18:54

Mucha gracias por el codigo, me acaba de sacar de un apuro.

Juan Marcos garcia wrote re: Como convertir números a letras
on Mon, May 21 2007 18:35

Habra algo asi pero para ASP (No ASP.Net)... he buscado varias soluciones pero olo he encontrado en javascript

hxc wrote re: Como convertir números a letras
on Wed, May 23 2007 15:58

coo ago para que salga la palabra pesos al final

y en el 1000000

un millo DE PESOS

Sol wrote re: Como convertir números a letras
on Thu, May 24 2007 10:16

Lo felicito su codigo es muy bueno,solo que me marca un error diciendome que el valor no corresponde a los indices de la matriz ,a que se debera eso

Luis wrote re: Como convertir números a letras
on Thu, May 24 2007 22:03

¡¡¡ ESPECTACULAR !!!, y no exagero. Busqué y busqué, encontré una docena de funciones, todas larguísimas y dificiles de implementar. Buscaba algo como esto y lo encontré, gracias. Saludos desde Concepción, Chile

manuel vidal wrote re: Como convertir números a letras
on Sun, Jun 24 2007 13:19

hola, soy meny de  chihuahua  mexico  y  keria  ver  si me  podrias  hechar  la mano en  un  programa  igual  a estos   pero  tengo  las  variables declaradas  de:

dim unidad, decena, centena , num as interger

num = : cint (textbox1.text)

label2.visible = true

etc. etc

y  kiero ver kien me  puede ayudar a  declarar  las variables 11, 12,13, 14 y  encadenarla  en el case declarado  en la  decena = 1

Tony wrote re: Como convertir números a letras
on Mon, Jul 2 2007 14:16

El codigo funciona prefectamente. Para los que utilizan Visual basic 6.0 y quieren transformar a letras los decimales tambien aqui les mando esta parte:

Public Function Letras(Valor As Double) As String

Dim Largo As Integer

Dim Decimales As Double, strDecimal As String

Largo = Len(CStr(Format(CDbl(Valor), "#,###.00")))

Decimales = Mid(CStr(Format(CDbl(Valor), "#,###.00")), Largo - 2)

strDecimal = Mid(CStr(Decimales), 3, 2)

Valor = Valor - Decimales

Letras = Num2Text(Valor) & " BOLIVARES CON " & Num2Text(Val(strDecimal)) & " CENTIMOS."

end sub

Rodrigo wrote re: Como convertir números a letras
on Wed, Jul 11 2007 10:29

Este Codigo es espectacular, MIL FELICIDADES al programador, quiero hacer este pequeño aporte, porque tuve problemas con numeros del tipo nnnn.0n

y ademas porque normalmente nuestros numeros se encuentran en un textbox

Public Function Convertir(ByVal Numero As String) As String

       Dim NumDec As Single

       Dim NumEnt As Double

       Dim Decimales As Integer

       Dim Deci As String

       NumDec = Math.Round(CSng(Numero), 2)

       NumEnt = Math.Truncate(NumDec)

       Decimales = CInt((NumDec - NumEnt) * 100)

       Deci = " " & Right("00" & CStr(Decimales), 2) & "/100"

       Convertir = Num2Text(NumEnt) & Deci

   End Function

Saludos a todos

jorgus wrote re: Como convertir números a letras
on Fri, Jul 20 2007 11:00

Excelente, me funciono de maravillas

MACURO wrote re: Como convertir números a letras
on Wed, Aug 1 2007 11:31

Muchas Graciaas a todos; el codigo esta de *** madre..... Me an ayudado un culo; muchas gracias; cualkier cosa en la cual yo pueda ser util pasenme la vocina.

ATT. MACURO

Juan BR wrote re: Como convertir números a letras
on Wed, Aug 15 2007 11:15

Esta Perfecto y lo de los decimales lo solucione de esta manera grax por la ayuda que nos brindan a los que sabemos muy poco

Private Sub Convierte_Click()

Largo = Len(CStr(Format(CDbl(Value), "#,###.00")))

Decimales = Mid(CStr(Format(CDbl(Value), "#,###.00")), Largo - 2)

Largo2 = Len(CStr(Format(CDbl(Decimales), "#,###.00")))

text1.Text = Num2Text(Value - Decimales) & " PESOS  " & Mid(Decimales, Largo2) & "/100" & " M.N. "

End Sub

elizabeth wrote re: Como convertir números a letras
on Wed, Aug 22 2007 11:33

como convertir numeros a romanos hasta 100000000

rulas wrote re: Como convertir números a letras
on Fri, Aug 31 2007 12:19

antes que nada te mando un saludo enorme y tengo el mismo problema que muchos, aparte de que soy principiante. te solicito tu ayuda ya que estoy escribiendo la instruccion en visual basic en excel pero no se como la hago funcionar, que debo de hacer.

si funciona desde el programa que estoy utilizando?

orientame por favor.

gracias de nuevo.

mi email es rubisestrada@hotmail.com

julio wrote re: Como convertir números a letras
on Sat, Sep 1 2007 18:49

esta joda no sirve para nada que proqueriaaaaaaaa

Ismael wrote re: Como convertir números a letras
on Sun, Sep 2 2007 3:50

Excelente, tenia la misma idea...pero encontré esto primero jaja

DJ VARO wrote re: Como convertir números a letras
on Thu, Sep 6 2007 10:16

GRACIAS VARGAS ME SACASTE DE UN APURO GRACIAS :-)

rosalba wrote re: Como convertir números a letras
on Tue, Sep 11 2007 1:00

necesito saber como convertir numeros a letras y en pesos, pero tengo un problema, no se mucho computacion si me lo pudieran decir paso a paso

Gerson wrote re: Como convertir números a letras
on Tue, Sep 18 2007 15:43

esta codificacion esta buenisima, mi pregunta es como la utilizo. Porque mi resultado en numeros saldra en una etiqueta (label 16).

Que prosigue

sandropatricio@hotmail.com wrote re: Como convertir números a letras
on Fri, Sep 21 2007 0:54

Me sirvio mucho el codigo, lo modifique un poco para mi uso en Perú, quiza les ayude el codigo completo que arme gracias a ustedes...

Saludos

ejemplo:

12345.67

DOCE MIL TRESCIENTOS CUARENTA Y CINCO CON 00/100 NUEVOS SOLES

Código:

Public Function Letras(Valor As Double) As String

   Dim Largo As Integer

   Dim Decimales As Double, strDecimal As String

   Largo = Len(CStr(Format(CDbl(Valor), "#,###.00")))

   Decimales = Mid(CStr(Format(CDbl(Valor), "#,###.00")), Largo - 2)

   Select Case Decimales

       Case 0: strDecimal = "00"

       Case 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9: strDecimal = (Mid(CStr(Decimales), 3, 2)) * 10

       Case Is < 100: strDecimal = Mid(CStr(Decimales), 3, 2)

   End Select

   Valor = Valor - Decimales

   Letras = Num2Text(Valor) & " CON " & strDecimal & "/100 NUEVOS SOLES"

End Function

Public Function Num2Text(ByVal value As Double) As String

   Select Case Int(value)

       Case 0: Num2Text = "CERO"

       Case 1: Num2Text = "UNO"

       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#: Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "

           If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)

       Case 1000000000000#: Num2Text = "UN BILLON"

       Case Is < 2000000000000#: Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

       Case Else: Num2Text = Num2Text(Int(value / 1000000000000#)) & " BILLONES"

           If (value - Int(value / 1000000000000#) * 1000000000000#) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000000000#) * 1000000000000#)

   End Select

End Function

Gerson wrote re: Como convertir números a letras
on Mon, Sep 24 2007 17:37

como aplico el codigo., ya que mi resultado en numeros sale en label 16 y quiero que la conversion el letras salga en el textbox10

Gerson wrote re: Como convertir números a letras
on Mon, Sep 24 2007 17:37

como aplico el codigo., ya que mi resultado en numeros sale en label 16 y quiero que la conversion el letras salga en el textbox10

danahe wrote re: Como convertir números a letras
on Fri, Sep 28 2007 19:57

sabrás como pasar este código a c++, con una entrada n del numero y que además sea flotante, hasta 3 decimales

Alvaro wrote re: Como convertir números a letras
on Wed, Oct 3 2007 1:46

excelente codigo me ha servido muchisiiiimo gracias!!

Miguel wrote re: Como convertir números a letras
on Thu, Oct 18 2007 17:58

Gracias, por el código me ha sido muy útil, en algun momento si llegaran a requerir código para CRM de MS, en mi blog encontraran una variedad interesante de TIPS.

Saludos

Luisillo wrote re: Como convertir números a letras
on Fri, Oct 19 2007 13:13

MUUCHAS GRACIAS, Johnny.... Me ha servido muchísimo. Por lo demás q se tiene q programar para las monedas de los distintos países sólo basta con algunas aportaciones q han puesto (yo lo estoy trabajando para México y Venezuela). Pero lo que tú hiciste está excelente. Muchas gracias

ramiro wrote re: Como convertir números a letras
on Mon, Oct 22 2007 17:48

muy bueno me salvaste la vida por que tenia una  tarea de estas y la oavia buscado por todas partes  y encontraba pero era mas raro de entenderle gracias

Juan Carlos wrote re: Como convertir números a letras
on Wed, Oct 24 2007 16:00

Muchas gracias!!! Jhonny, esta muy bueno el código me sirvio mucho.

Joe wrote re: Como convertir números a letras
on Thu, Oct 25 2007 1:47

Buenisimo Gracias por tu aporte me ayudo un monton GRACIAS!!!!!!!!!!!!!!!!! *)

jackserra wrote re: Como convertir números a letras
on Fri, Oct 26 2007 16:14

eres un perrillo!!!

esta chevere tu prog...

haces un paronon guey.

serra!!!!

Gerardo wrote re: Como convertir números a letras
on Fri, Oct 26 2007 18:12

Lo necesitaba en c#, así que hice la traducción, les dejo la clase:

using System;

using System.Collections.Generic;

using System.Text;

namespace Conversiones

{

   class Conv

   {

       public string enletras(string num)

       {

           string res, dec = "";

           Int64 entero;

           int decimales;

           double nro;

           try

           {

               nro = Convert.ToDouble(num);

           }

           catch

           {

               return "";

           }

           entero = Convert.ToInt64(Math.Truncate(nro));

           decimales = Convert.ToInt32(Math.Round((nro - entero) * 100, 2));

           if (decimales > 0)

           {

               dec = " CON " + decimales.ToString() + "/100";

           }

           res = toText(Convert.ToDouble(entero)) + dec;

           return res;

       }

       private string toText(double value)

       {

           string Num2Text = "";

           value = Math.Truncate(value);

           if (value == 0) Num2Text = "CERO";

           else if (value == 1) Num2Text = "UNO";

           else if (value == 2) Num2Text = "DOS";

           else if (value == 3) Num2Text = "TRES";

           else if (value == 4) Num2Text = "CUATRO";

           else if (value == 5) Num2Text = "CINCO";

           else if (value == 6) Num2Text = "SEIS";

           else if (value == 7) Num2Text = "SIETE";

           else if (value == 8) Num2Text = "OCHO";

           else if (value == 9) Num2Text = "NUEVE";

           else if (value == 10) Num2Text = "DIEZ";

           else if (value == 11) Num2Text = "ONCE";

           else if (value == 12) Num2Text = "DOCE";

           else if (value == 13) Num2Text = "TRECE";

           else if (value == 14) Num2Text = "CATORCE";

           else if (value == 15) Num2Text = "QUINCE";

           else if (value < 20) Num2Text = "DIECI" + toText(value - 10);

           else if (value == 20) Num2Text = "VEINTE";

           else if (value < 30) Num2Text = "VEINTI" + toText(value - 20);

           else if (value == 30) Num2Text = "TREINTA";

           else if (value == 40) Num2Text = "CUARENTA";

           else if (value == 50) Num2Text = "CINCUENTA";

           else if (value == 60) Num2Text = "SESENTA";

           else if (value == 70) Num2Text = "SETENTA";

           else if (value == 80) Num2Text = "OCHENTA";

           else if (value == 90) Num2Text = "NOVENTA";

           else if (value < 100) Num2Text = toText(Math.Truncate(value / 10) * 10) + " Y " + toText(value % 10);

           else if (value == 100) Num2Text = "CIEN";

           else if (value < 200) Num2Text = "CIENTO " + toText(value - 100);

           else if ((value == 200) || (value == 300) || (value == 400) || (value == 600) || (value == 800)) Num2Text = toText(Math.Truncate(value / 100)) + "CIENTOS";

           else if (value == 500) Num2Text = "QUINIENTOS";

           else if (value == 700) Num2Text = "SETECIENTOS";

           else if (value == 900) Num2Text = "NOVECIENTOS";

           else if (value < 1000) Num2Text = toText(Math.Truncate(value / 100) * 100) + " " + toText(value % 100);

           else if (value == 1000) Num2Text = "MIL";

           else if (value < 2000) Num2Text = "MIL " + toText(value % 1000);

           else if (value < 1000000)

           {

               Num2Text = toText(Math.Truncate(value / 1000)) + " MIL";

               if ((value % 1000) > 0) Num2Text = Num2Text + " " + toText(value % 1000);

           }

           else if (value == 1000000) Num2Text = "UN MILLON";

           else if (value < 2000000) Num2Text = "UN MILLON " + toText(value % 1000000);

           else if (value < 1000000000000)

           {

               Num2Text = toText(Math.Truncate(value / 1000000)) + " MILLONES ";

               if ((value - Math.Truncate(value / 1000000) * 1000000) > 0) Num2Text = Num2Text + " " + toText(value - Math.Truncate(value / 1000000) * 1000000);

           }

           else if (value == 1000000000000) Num2Text = "UN BILLON";

           else if (value < 2000000000000) Num2Text = "UN BILLON " + toText(value - Math.Truncate(value / 1000000000000) * 1000000000000);

           else

           {

               Num2Text = toText(Math.Truncate(value / 1000000000000)) + " BILLONES";

               if ((value - Math.Truncate(value / 1000000000000) * 1000000000000) > 0) Num2Text = Num2Text + " " + toText(value - Math.Truncate(value / 1000000000000) * 1000000000000);

           }

           return Num2Text;

       }

   }

}

jvargas wrote re: Como convertir números a letras
on Tue, Oct 30 2007 15:39

Gracias Gerardo... subiré tu código en C# sino te molesta... si es así... avisame y lo quito.

Un abrazo!

Jhonny Vargas P. wrote Convertir Número a Letras en C# - Por Gerardo (nn)
on Tue, Oct 30 2007 15:43

Gracias Gerardo.... adjunto el código para C#, por si algún otro usuario lo llegara a necesitar. Para

edgar wrote re: Como convertir números a letras
on Wed, Oct 31 2007 8:51

Buenas, soy nuevo en el manejo de base de datos, pero necesito saber como en una hoja de excel puedo crear una macros parea convertir numeros a letras en pesos.

Julio Goicochea wrote re: Como convertir números a letras
on Wed, Oct 31 2007 14:53

Exelente función, me acaba de ahorrar un día de trabajo... Para quien quiera que funcione con decimales aquí les dejo un recurso que pude crear:

       Dim i, pos As Short

       Dim Ent, Dec As Single

       For i = 1 To Len(txtNumero.Text)

           If Mid(txtNumero.Text, i, 1) = "." Then

               pos = i

               Ent = Mid(txtNumero.Text, 1, i - 1)

               Dec = Mid(txtNumero.Text, i + 1, 2)

           End If

       Next

       lblTexto.Text = Num2Text(Ent) + " con " + Num2Text(Dec) + "Decimales"

Obviamente: txtNumero es el control en el cual se ingresa el número a convertir y lblTexto es el control donde se recibe el valor en letras.

Mil gracias

FixTino wrote re: Como convertir números a letras
on Fri, Nov 16 2007 7:51

Muchas Gracias por sus aportes, sirvio de mucho.

sayda wrote re: Como convertir números a letras
on Tue, Nov 20 2007 15:10

quiero convertir el numero 255 a letras

Eduardo Nuñez Feltan wrote re: Como convertir números a letras
on Thu, Nov 22 2007 17:07

Esta función la utilizo para convertir nros. a textos en ASP. Espero que les sirva.

<%

'funcion para convertir números a letras

''nro=request.querystring("a")

'-*-*-*-*-*-*-*-*-*-*-*-*-*-*-'

'-*-*-*-*-*-*-*-*-*-*-*-*-*-*-'

moneda=" PESOS"

Function Letras(NUMERO,DIVISIONX)

   AUX1 = NUMERO

DIVISION=DIVISIONX

  CADENA = " "

   Do While DIVISION > 0

       Select Case DIVISION

           Case 100

               If Int(AUX1 / DIVISION) >= 1 Then

                   If Int(AUX1 / DIVISION) <> AUX1 / DIVISION And Int(AUX1 / DIVISION) = 1 Then

                       CADENA = CADENA + "CIENTO"

                      Else

  select case Int(AUX1 / DIVISION)

case 1

cadena= cadena + "CIEN"

case 2

cadena= cadena + "DOSCIENTOS"

case 3

cadena= cadena + "TRESCIENTOS"

case 4

cadena= cadena + "CUATROCIENTOS"

case 5

cadena= cadena + "QUINIENTOS"

case 6

cadena= cadena + "SEISCIENTOS"

case 7

cadena= cadena + "SETECIENTOS"

case 8

cadena= cadena + "OCHOCIENTOS"

case 9

cadena= cadena + "NOVECIENTOS"

END SELECT

                   End If

                   CADENA = CADENA + " "

               End If

           Case 10

               If Int(AUX1 / DIVISION) >= 1 Then

                   If Int(AUX1 / DIVISION) <> AUX1 / DIVISION Then

                       If AUX1 <= 15 Then

select case AUX1 -10

case 1

cadena= cadena + "ONCE"

case 2

cadena= cadena + "DOCE"

case 3

cadena= cadena + "TRECE"

case 4

cadena= cadena + "CATORCE"

case 5

cadena= cadena + "QUINCE"

END SELECT

                           Exit Do

                          Else

  select case Int(AUX1 / DIVISION)

case 1

cadena= cadena + "DIECI"

case 2

cadena= cadena + "VEINTI"

case 3

cadena= cadena + "TREINTA Y "

case 4

cadena= cadena + "CUARENTA Y "

case 5

cadena= cadena + "CINCUENTA Y "

case 6

cadena= cadena + "SESENTA Y "

case 7

cadena= cadena + "SETENTA Y "

case 8

cadena= cadena + "OCHENTA Y "

case 9

cadena= cadena + "NOVENTA Y "

END SELECT

                       End If

                      Else

select case Int(AUX1 / DIVISION)

case 1

cadena= cadena + "DIEZ"

case 2

cadena= cadena + "VEINTE"

case 3

cadena= cadena + "TREINTA"

case 4

cadena= cadena + "CUARENTA"

case 5

cadena= cadena + "CINCUENTA"

case 6

cadena= cadena + "SESENTA"

case 7

cadena= cadena + "SETENTA"

case 8

cadena= cadena + "OCHENTA"

case 9

cadena= cadena + "NOVENTA"

END SELECT

                   End If

               End If

           Case 1

               If AUX1 > 0 Then

select case AUX1

case 1

cadena= cadena + "UN"

case 2

cadena= cadena + "DOS"

case 3

cadena= cadena + "TRES"

case 4

cadena= cadena + "CUATRO"

case 5

cadena= cadena + "CINCO"

case 6

cadena= cadena + "SEIS"

case 7

cadena= cadena + "SIETE"

case 8

cadena= cadena + "OCHO"

case 9

cadena= cadena + "NUEVE"

END SELECT

               End If

       End Select

       AUX1 = AUX1 - (Int(AUX1 / DIVISION) * DIVISION)

       DIVISION = Int(DIVISION / 10)

   Loop

   Letras = CADENA

End Function

'-*-*-*-*-*-*-*-*-*-*-*-*-*-*-'

FUNCTION MONTOESCRITO(NRO)

NRO=NRO

ON ERROR RESUME NEXT

SIGNONEGATIVO=""

NEGATIVO=""

FUENTE="<FONT COLOR='BLACK'>"

IF NRO<0 THEN

LENNUMERON=LEN(NRO)

SIGNONEGATIVO="-"

NEGATIVO="MENOS "

NRO=MID(NRO,2,LENNUMERON)

FUENTE="<FONT COLOR='RED'>"

END IF

if nro>99999999.99  then

response.write "<td colspan='2' align='center'><p><b><font color=red>Atención!!!<br><font color=black>El importe debe ser menor a 99999999.99<br>"

response.write "NOVENTA Y NUEVE MILLONES NOVECIENTOS NOVENTA Y NUEVE MIL NOVECIENTOS NOVENTA Y NUEVE CON NOVENTA Y NUEVE<br><br>"

response.write "<form><input type='button' value='Regresar' onclick=history.back(1)></form></td></tr>"

response.write "<tr><td colspan='2' bgcolor='191970'><center><p><font color='ffffee'>Creado por <a href='mailto:eduardo@helpcom.com.ar' title='Enviar E-mail'>Eduardo J. M. Nuñez Feltan</a> - &copy;"&year(date())&"</font></p></td></tr>"

response.end

end if

MONEDA=MONEDA

if moneda=" DOLARES" THEN

SIGNO="U$S"

ELSE

SIGNO="$"

END IF

lennumero=len(nro)

punto=instr(nro,".")

if punto=0 then

punto=instr(nro,",")

end if

IF LEFT(NRO,1)="0" THEN

NUMEROENTERO="0"

ELSE

''numeroentero=int(nro)

if punto<>0 then

numeroentero=int(mid(nro,1,punto-1))

else

numeroentero=int(nro)

end if

END IF

LONGITUDENTERO=LEN(NUMEROENTERO)

select case  LONGITUDENTERO

case 1

''entre="1-9"

div=1

case 2

''entre="10-99"

div=10

case 3

''entre="100-999"

div=100

case 4

''entre="1000-9999"

DIV1=1

div=1000

MIL=LETRAS(LEFT(NUMEROENTERO,1),DIV1)&" MIL "

case 5

''entre="10000-99999"

div1=10

DIV=10000

MIL=LETRAS(LEFT(NUMEROENTERO,2),DIV1)&" MIL "

case 6

''entre="100000-99999"

div1=100

DIV=100000

MIL=LETRAS(LEFT(NUMEROENTERO,3),DIV1)&" MIL "

case 7

''entre="1000000-9999999"

DIV1=1

div=1000000

MIL=LETRAS(LEFT(NUMEROENTERO,1),DIV1)

IF MIL=" UN" THEN

MIL=MIL&" MILLÓN "

ELSE

MIL=MIL&" MILLONES "

END IF

DIV1=100

div=1000

CIENTO=LETRAS(MID(NUMEROENTERO,2,3),DIV1)&" MIL "

IF CIENTO="  MIL " THEN

MIL=MIL

ELSE

MIL=MIL&CIENTO

END IF

case 8

''entre="10000000-99999999"

DIV1=10

div=10000000

MIL=LETRAS(LEFT(NUMEROENTERO,2),DIV1)

IF MIL=" UN" THEN

MIL=MIL&" MILLÓN "

ELSE

MIL=MIL&" MILLONES "

END IF

DIV1=100

div=1000

CIENTO=LETRAS(MID(NUMEROENTERO,1,1),DIV1)&" MIL "

IF CIENTO="  MIL " THEN

MIL=MIL

ELSE

MIL=MIL&CIENTO

END IF

end select

DIV2=10

if punto<>0 then

CUANTOSCENTAVOS=mid(nro,punto+1,2)

if CUANTOSCENTAVOS=00 then

centavos=0

else

IF LEN(CUANTOSCENTAVOS)=1 THEN

centavos=mid(nro,punto+1,2)&"0"

'response.write centavos

ELSE

centavos=mid(nro,punto+1,2)

'response.write centavos

END IF

end if

end if

r=letras(numeroentero,DIV)

''response.write "<td colspan='2' bgcolor=dce692><CENTER><p>"

response.write "<B>"&FUENTE&NEGATIVO

IF MIL="" AND R=" UN" THEN

IF MONEDA=" DOLARES" THEN

MONEDA=LEFT(MONEDA,6)

ELSE IF MONEDA=" PESOS" THEN

MONEDA=LEFT(MONEDA,5)

END IF

END IF

END IF

MONTOESCRITOX=MIL&r&MONEDA

IF MONTOESCRITOX="  PESOS" OR MONTOESCRITOX="  DOLARES" THEN

MONTOESCRITOX=""

ELSE

RESPONSE.WRITE MONTOESCRITOX

END IF

'x=letras(centavos,DIV2)

if centavos<>0 then

IF PUNTO<>0 AND X<> " " THEN

if montoescritox="" then

response.write x&" CENTAVOS.</B>"

ELSE

'response.write " CON "&x&" CENTAVOS.</B>"

response.write " con "&centavos&"/100.</B>"

end if

else

'response.write " CON "&x&" CENTAVOS.</B>"

response.write " con "&centavos&"/100.</B>"

END IF

end if

end function

%>

'//////////////////////////////////////////////////

'y para llamar a la función utilizo lo siguiente:

'

'acumula es el valor numérico que quiero convertir a Texto

'//////////////////////////////////////////////////

<%sx=montoescrito(acumula)

response.write sx%>

'espero les sea de su agrado.

Saludos desde Campo Viera Miisones, Argentina

Emanuel Rivera wrote re: Como convertir números a letras
on Fri, Nov 23 2007 15:47

y como lo hago alreves?? entrar un valor en palabras.. y que te entregue el valor numerico correspondiente

:/

Jhoel Daniel JDPD wrote re: Como convertir números a letras
on Mon, Nov 26 2007 8:28

em todo eso sale mal al ejecutar por k no reconoce

END FUNCTION    si saben ese ¿porque? rspondan a este

comentario ......

...jhoel daniel...JDPD

Jerry wrote re: Como convertir números a letras
on Mon, Nov 26 2007 19:44

como puedo utilizar el codigo o la funcion en Excel 2003

gracias

Jesús wrote re: Como convertir números a letras
on Thu, Nov 29 2007 23:12

Gracias por la función, me salvaste el proyecto!

Saludos!

Julioc wrote re: Como convertir números a letras
on Wed, Dec 5 2007 21:00

por fa si pueden enviamenlo a mi correo el cual es nilve_2005@yahoo.es

JulioC wrote re: Como convertir números a letras
on Wed, Dec 5 2007 21:02

por fa si pueden envienmelo a mi correo el cual es nilve_2005@hotmail.com

David R. wrote re: Como convertir números a letras
on Thu, Dec 20 2007 17:44

La funcion esta de lujo, a mi tambien me ahorro un dia o hasta mas tiempo en codificar esta funcion que lo mas comun en donde se usan es en la facturaccion y los cheques que los gorrosos contadores piden o administradores

FREGONSAL wrote re: Como convertir números a letras
on Sat, Dec 29 2007 5:42

TENGO ELSIGUIENTE PROBLEMA CON  CIENTO UNO MIL, DOSCIENTOS UNO MIL

101,000.00 CIENTO UNO MIL 00/100 DOLARES

201,000.00 DOSCIENTOS UNO MIL 00/100 DOLARES

301,000.00 TRESCIENTOS UNO MIL 00/100 DOLARES

401,000.00 CUATROCIENTOS UNO MIL 00/100 DOLARES

COMO PUEDO CORREGIRLO??

Ninoska wrote re: Como convertir números a letras
on Fri, Jan 4 2008 19:29

Codigo  buenisimos gracias solo hay que agregar dos textbox y un boton :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

       Dim d As Double

       d = TextBox1.Text

       Dim i As Integer = Math.Floor(d)

       Dim r As Integer = CInt((d - i) * 100)

       TextBox2.Text = "Bolivares" & Num2Text(i) & " CON " & Num2Text(r) & " CENTIMOS"

   End Sub

   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

End Class

Yesid correa wrote re: Como convertir números a letras
on Sun, Jan 6 2008 6:35

hola quisiera saber si pueden ayudarme necesito el mismo codigo que convierte numeros en letras pero para aplicarlo en access, serian tan amable de ayudarme, mil gracias yesidcorrea@gmail.com

ppaattooss wrote re: Como convertir números a letras
on Wed, Jan 9 2008 15:34

como puedo eliminar la parte entera de un numero decimal para poder utilizar solo los decimales

Ana wrote re: Como convertir números a letras
on Mon, Jan 21 2008 16:06

Encontré en esta dirección un código sin tanto error, espero que les sirva

www.lawebdelprogramador.com/.../enlace.php

CYNTH!A* wrote re: Como convertir números a letras
on Tue, Jan 29 2008 12:46

SUPER BIEN EL CODIGO ME SIRVIO MUCHISSIIISIIIMO!!

APARTE FACIL DE ENTENDER!

TNKS!

KUKOCH wrote re: Como convertir números a letras
on Sun, Feb 3 2008 11:46

PORFAVOR NECESITO QUE ALGUIEN ME PUEDA PROPORCIONAR LA FORMA DE CAMBIAR EL COLOR DE CARACTERES Y EL FONDO DE PANTALLA DE DOS USANDO UN CODIGO DESDE EL PROGRAMA DE C++.

jorge wrote re: Como convertir números a letras
on Mon, Feb 4 2008 8:03

en que meto el codigo en cajas d texto o en donde si m pueden ayudar

luis ramiro gamboa wrote re: Como convertir números a letras
on Wed, Feb 20 2008 6:20

SOY DE LOS QUE APRENDEN HACIENDO Y NO HE PODIDO HACER QUE EL CODIGO ME FUNCIONE EN ACCESS. AGRADECERIA INMENSAMENTE A QUIEN ME PUEDA COLABORAR, PASO A PASO.

NO SE PORQUÈ PEGO EL CODIGO EN ACCESS Y NO ME FUNCIONA

AYÙDENME, POR FAVOR.

GRACIAS.

luisramirogamboa@hotmail.com

luisramirogamboa@yahoo.com

Francisco Carrillo wrote re: Como convertir números a letras
on Wed, Feb 20 2008 18:56

Hola, este codigo me sirvio muchisimo solo que yo programo en c# y lo paso todo a este lenguaje, lo pongo aqui pero tambien les dejo un enlace con el programa para poder ver como funciona, esta en visual c# 2005.

       private string Numero_A_Letra(double valor)

       {

           switch ((int)valor)

           {

               case 0: retun = ""; break;

               case 1: retun = "UN"; break;

               case 2: retun = "DOS"; break;

               case 3: retun = "TRES"; break;

               case 4: retun = "CUATRO"; break;

               case 5: retun = "CINCO"; break;

               case 6: retun = "SEIS"; break;

               case 7: retun = "SIETE"; break;

               case 8: retun = "OCHO"; break;

               case 9: retun = "NUEVE"; break;

               case 10: retun = "DIEZ"; break;

               case 11: retun = "ONCE"; break;

               case 12: retun = "DOCE"; break;

               case 13: retun = "TRECE"; break;

               case 14: retun = "CATORCE"; break;

               case 15: retun = "QUINCE"; break;

               case 16: case 17: case 18: case 19: retun = "DIECI" + Numero_A_Letra(valor - 10); break;

               case 20: retun = "VEINTE"; break;

               case 21: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: retun = "VEINTI" + Numero_A_Letra(valor - 20); break;

               case 30: retun = "TREINTA"; break;

               case 40: retun = "CUARENTA"; break;

               case 50: retun = "CINCUENTA"; break;

               case 60: retun = "SESENTA"; break;

               case 70: retun = "SETENTA"; break;

               case 80: retun = "OCHENTA"; break;

               case 90: retun = "NOVENTA"; break;

               case 100: retun = "CIEN"; break;

               case 200: case 300: case 400: case 600: case 800: retun = Numero_A_Letra((int)valor / 100) + "CIENTOS"; break;

               case 500: retun = "QUINIENTOS"; break;

               case 700: retun = "SETECIENTOS"; break;

               case 900: retun = "NOVECIENTOS"; break;

               case 1000: retun = "MIL"; break;

               case 1000000: retun = "UN MILLON DE"; break;

               default:

                   if (valor < 100) { retun = Numero_A_Letra((int)(valor / 10) * 10) + " Y " + Numero_A_Letra(valor % 10); }

                   else if (valor < 200) { retun = "CIENTO " + Numero_A_Letra(valor - 100); }

                   else if (valor < 1000) { retun = Numero_A_Letra((int)(valor / 100) * 100) + " " + Numero_A_Letra(valor % 100); }

                   else if (valor < 2000) { retun = "MIL " + Numero_A_Letra(valor % 1000); }

                   else if (valor < 1000000)

                   {

                       retun = Numero_A_Letra((int)valor / 1000) + " MIL";

                       if (valor % 1000 < 1000) { retun = retun + " " + Numero_A_Letra(valor % 1000); }

                   }

                   else if (valor < 2000000) { retun = "UN MILLON " + Numero_A_Letra(valor % 1000000); }

                   else if (valor < 1000000000000.0)

                   {

                       retun = Numero_A_Letra((int)valor / 1000000) + " MILLONES ";

                       if ((valor - (int)(valor / 1000000) * 1000000) < 1000000 && (valor - (int)(valor / 1000000) * 1000000) != 0) { retun = retun + Numero_A_Letra(valor - (int)(valor / 1000000) * 1000000); }

                       else { retun = retun + "DE"; }

                   }

                   else if (valor == 1000000000000.0) { retun = "UN BILLON DE"; }

                   else if (valor < 2000000000000.0) { retun = "UN BILLON " + Numero_A_Letra(valor - (int)(valor / 1000000000000.0) * 1000000000000.0); }

                   else

                   {

                       retun = Numero_A_Letra((int)(valor / 1000000000000.0)) + " BILLONES ";

                       if (valor - (int)(valor / 1000000000000.0) * 1000000000000.0 < 1000000000000.0 && valor - (int)(valor / 1000000000000.0) * 1000000000000.0 != 0) { retun = retun + Numero_A_Letra(valor - (int)(valor / 1000000000000.0) * 1000000000000.0); }

                       else { retun = retun + "DE"; }

                   }

                   break;

           }

           return retun;

       }

       private string Num2Letra(string numero, string moneda, bool nacional)

       {

           string nacion = ")";

           string decimales = "00";

           if (nacional) { nacion = " M.N.)"; }

           else { nacion = " USD)"; }

           if (numero.Contains("."))

               if (numero.Substring(numero.IndexOf(".") + 1).Length > 1) { decimales = numero.Substring(numero.IndexOf(".") + 1, 2); }

               else { decimales = numero.Substring(numero.IndexOf(".") + 1) + "0"; }

           string valor = "(" + Numero_A_Letra(Convert.ToDouble(numero)).Trim() + " " + moneda + " " + decimales + "/100";

           return valor + nacion;

       }

AQUI ESTA EL ENLACE:

sipro.diinoweb.com/.../NumALetras.zip

Phonck wrote re: Como convertir números a letras
on Thu, Feb 21 2008 22:31

Exelente Jhonny... lo implemente en Excel 2002 y me funcionó de maravilla ... solo modifique un poco lo de "EleAEse" agregando esto al final de tu código para que funcione en la hoja de calculo como una funcion del usuario...  salu2

Public Function NumeroATexto(ByVal d As Double) As String

If d - Int(d) Then

Lentero = Num2Text(Int(d))

Ldec = Num2Text(Mid(d - Int(d), 3, 2))

NumeroATexto = Num2Text(Int(d)) & " PESOS CON " & Num2Text(Mid(d - Int(d), 3, 2)) & " CENTAVOS"

Else

NumeroATexto = Num2Text(Int(d)) & " PESOS"

End If

End Function

ESPERO LES SIRVA.. ME AYUDARON UN GUEVO... GRACIAS!!!

vickenperu@hotmail.com wrote re: Como convertir números a letras
on Tue, Mar 4 2008 3:56

Muy bueno tu codigo Sandro Patricio me sirvio mucho... me ahorraste quemarme el cerebro Gracias

jvargas wrote re: Como convertir números a letras
on Tue, Mar 11 2008 14:43

Muchas gracias por compartir código en C# y para Excel.

Leo buzondeleo@yahoo.com wrote re: Como convertir números a letras
on Fri, Mar 14 2008 20:22

HOLA, hace un par de dias necesite ese código para una pequeña aplicación de impresión de cheques, pero no encontre algo adaptable y sin errores, así que devuelta a la maravillosa programación. Decidi escribirlo con muy buenos resultados. En cuanto a mi código es más extenso por su estructura.

La aplicación la hice en ACCES 2003 No se como subirla

pero aqui va el CODE y ustedes me cuentan.

Pueden ponerlo en el evento "despues de actualizar" de un cuadro de texto. Lo tengo limitado a 999'999.999

pero podran acomodarlo a su necesidad facilmente. Peguenlo en un editor para que puedan verlo bien.

'CONVERSION DE UN NUMERO A SU CORRESPONDIENTE VALOR EN LETRAS

'BY Leo buzondeleo@yahoo.com

'Iniciado 12 de Marzo de 2008

'Esta version funciona OK, pero podra ser más compacta en un futuro (por aquello de la critica).

'Manejo sutilmente las decenas, centenas etc. y el cero es decir sin matarme la cabeza.

'Tengo pendiente los decimales por que no los uso, pero lo completare dentro de poco.

'Facilmente podra ajustarse a otras monedas.

Private Sub Valor_AfterUpdate()

Dim ValATexto, TextoAux, Siguiente, PostSiguiente, Scan As String

Dim LongValor, I, J, K, Posicion As Integer

Dim Redondo As Boolean

'Aqui comienza todo: El numero a convertir en letras es capturado en Valor (Cuadro de texto) y _

se refleja en otro cuadro de texto (LaSumaDe).

'***WARNING*** Utilicen una regla de validación para evitar desbordamientos, yo lo hice en el formulario pueden también con codigo.

   ValATexto = LTrim(Str(Valor)) 'Convierte el valor a texto y elimina el espacio a la izquierda

   LongValor = Len(ValATexto) 'Mide la longitud del texto en caracteres

   For I = 1 To LongValor

       'Detecta el número siguiente al que se sensa en el primer "Select Case"

       If LongValor > 1 Then Siguiente = Mid(ValATexto, I + 1, 1)

       'Detecta el segundo número siguiente al que se sensa en el primer "Select Case"

       If LongValor > 2 Then PostSiguiente = Mid(ValATexto, I + 2, 1)

       Posicion = LongValor + 1 - I 'Sensor de posición

       Select Case Mid(ValATexto, I, 1) 'Sensor de numero

' 1

           Case "1" 'Si encuentra por ejemplo un "1" procedera a determinar _

                     la posicion dentro de la cantidad para asignarle su valor en letras

               Select Case Posicion 'El bloque de seleccion para el "1" es más largo que los demás por 11,12,13...19

                   Case 1, 7

                           If Posicion = 7 And LongValor > 7 Then

                               TextoAux = TextoAux + "UN MILLONES " 'Ej: 21'8--.---

                           ElseIf Posicion = 7 Then

                               TextoAux = TextoAux + "UN MILLON "   'Ej:  1'8--.---

                           Else

                               TextoAux = TextoAux + "UN "          'Ej:         21

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "DIEZ "

                       ElseIf Siguiente = "1" Then

                           TextoAux = TextoAux + "ONCE "

                           I = I + 1               'Salta el sensor una posición para evitar Ej: 12 = "DOCE DOS"

                       ElseIf Siguiente = "2" Then

                           TextoAux = TextoAux + "DOCE "

                           I = I + 1

                       ElseIf Siguiente = "3" Then

                           TextoAux = TextoAux + "TRECE "

                           I = I + 1

                       ElseIf Siguiente = "4" Then

                           TextoAux = TextoAux + "CATORCE "

                           I = I + 1

                       ElseIf Siguiente = "5" Then

                           TextoAux = TextoAux + "QUINCE "

                           I = I + 1

                       ElseIf Siguiente = "6" Then

                           TextoAux = TextoAux + "DIECISEIS "

                           I = I + 1

                       ElseIf Siguiente = "7" Then

                           TextoAux = TextoAux + "DIECISIETE "

                           I = I + 1

                       ElseIf Siguiente = "8" Then

                           TextoAux = TextoAux + "DIECIOCHO "

                           I = I + 1

                       ElseIf Siguiente = "9" Then

                           TextoAux = TextoAux + "DIECINUEVE "

                           I = I + 1

                       End If

                       If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                       If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "CIEN "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "CIENTO "

                       End If

                   Case 4

                           TextoAux = TextoAux + "MIL "

               End Select

' 2

           Case "2"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "DOS MILLONES "

                           Else

                               TextoAux = TextoAux + "DOS "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "VEINTE "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "VEINTI "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "DOCIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "DOCIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "DOS MIL "

               End Select

' 3 A partir de aquí no cambia nada

           Case "3"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "TRES MILLONES "

                           Else

                               TextoAux = TextoAux + "TRES "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "TREINTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "TREINTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "TRECIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "TRECIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "TRES MIL "

               End Select

' 4

           Case "4"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "CUATRO MILLONES "

                           Else

                               TextoAux = TextoAux + "CUATRO "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "CUARENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "CUARENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "CUATROCIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "CUATROCIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "CUATRO MIL "

               End Select

' 5

           Case "5"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "CINCO MILLONES "

                           Else

                               TextoAux = TextoAux + "CINCO "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "CINCUENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "CINCUENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "QUINIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "QUINIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "CINCO MIL "

               End Select

' 6

           Case "6"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "SEIS MILLONES "

                           Else

                               TextoAux = TextoAux + "SEIS "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "SESENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "SESENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "SEICIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "SEICIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "SEIS MIL "

               End Select

' 7

            Case "7"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "SIETE MILLONES "

                           Else

                               TextoAux = TextoAux + "SIETE "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "SETENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "SETENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "SETECIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "SETECIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "SIETE MIL "

               End Select

' 8

            Case "8"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "OCHO MILLONES "

                           Else

                               TextoAux = TextoAux + "OCHO "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "OCHENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "OCHENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "OCHOCIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "OCHOCIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "OCHO MIL "

               End Select

' 9

            Case "9"

               Select Case Posicion

                   Case 1, 7

                           If Posicion = 7 Then

                               TextoAux = TextoAux + "NUEVE MILLONES "

                           Else

                               TextoAux = TextoAux + "NUEVE "

                           End If

                   Case 2, 5, 8

                       If Siguiente = "0" Then

                           TextoAux = TextoAux + "NOVENTA "

                           If Posicion = 5 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 8 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "NOVENTA Y "

                       End If

                   Case 3, 6, 9

                       If Siguiente = "0" And PostSiguiente = "0" Then

                           TextoAux = TextoAux + "NOVECIENTOS "

                           If Posicion = 6 Then TextoAux = TextoAux + "MIL "

                           If Posicion = 9 Then TextoAux = TextoAux + "MILLONES "

                       Else

                           TextoAux = TextoAux + "NOVECIENTOS "

                       End If

                   Case 4

                           TextoAux = TextoAux + "NUEVE MIL "

               End Select

      End Select

   Next I

   'Evalua si la conversion sera "PESOS" O "DE PESOS" Ej: TRES "PESOS" O UN MILLON "DE PESOS"

   Redondo = False

   If LongValor > 6 Then

       For J = LongValor To 1 Step -1

           Scan = Mid(ValATexto, J, 1)

           If Scan = "0" Then K = K + 1

           If K = 6 Then

               Redondo = True

               Exit For

           End If

       Next J

   Else

       Redondo = False

   End If

   'Muestra el resultado

   If LongValor = 1 And Mid(ValATexto, 1, 1) = "1" Then 'Por si el usuario digita $1 "UN PESO"

       LaSumaDe = TextoAux + "PESO M/CTE. * * * *"

   ElseIf Redondo = True Then

       LaSumaDe = TextoAux + "DE PESOS M/CTE.* * * *"

   Else

       LaSumaDe = TextoAux + "PESOS M/CTE. * * * *"

   End If

'Comprendo que hay maneras más sofisticadas de realizar este procedimiento, _

pero la idea era escribirlo basandome en mi propio analisis como ser humano para leer cierta cantidad. _

Parto de observar el primer numero y el siguiente asi como la ubicación de estos dentro del valor a convertir; _

es decir sin calculo de unidades, decenas etc, sino en una forma más instintiva.

'Este programita funciona perfecto, aunque por respeto a los puristas debo decir que se puede mejorar bastante el código. _

'Aun no detecto errores pero...

'

'Cordialmente,

' _

       LEONARDO _

       buzondelo@yahoo.com pa' los insultos.

End Sub

Sally wrote re: Como convertir números a letras
on Mon, Mar 17 2008 14:47

Ayúda sólo quiero leer calificaciones ejem. 9.9 me dé nueve punto nueve

mi e-mail

sally_default@hotmail.com

luis torres wrote re: Como convertir números a letras
on Tue, Mar 18 2008 16:44

Igual se agradece por compartir el código en C# y para Excel.

Lea wrote re: Como convertir números a letras
on Mon, Mar 24 2008 10:33

Hey esta super la funcion, no saben como me mate pensando como hacer eso, si me suponia que algo si tenia q hacer (la gran sabana de codigo XD) pero me sirvio mucho!! gran aporte chavo!!!

Arael82 wrote re: Como convertir números a letras
on Tue, Mar 25 2008 18:41

Bueno amigos este es mi aporte a este tremendo algoritmo. Implemento una función aparte llamada ConvierteCifra, extraigo el entero, el decimal y uno ambas conversiones, espero sea de utilidad.

'FUNCION CONVIERTECIFRA MEJORADO

Public Function ConvierteCifra(ByVal Valor As Double) As String

   'Declara variables

   Dim Largo As Integer, Decimales As Double, strEntero As String, strDecimal As String

   'Obtiene longitud del valor

   Largo = Len(CStr(Format(CDbl(Valor), "#,###.00")))

   'Obtiene enteros

   strEntero = Mid(CStr(Format(CDbl(Valor), "#,###.00")), 1, Largo - 3)

   'Obtiene decimales

   strDecimal = Mid(CStr(Format(CDbl(Valor), "#,###.00")), Largo - 1)

   'Convierte el entero

   ConvierteCifra = Num2TEXT(strEntero) & " BOLIVARES FUERTES"

   'Si el Decimal es mayor a cero, se indican en letras también

   If CInt(strDecimal) = 0 Then

       ConvierteCifra = ConvierteCifra & " EXACTOS"

   Else

       ConvierteCifra = ConvierteCifra & " CON " & Num2TEXT(strDecimal) & " CÉNTIMOS"

   End If

End Function

CESAR wrote re: Como convertir números a letras
on Thu, Mar 27 2008 14:19

Este codigo es infalible con este no hay pele con numeros enteros, decimales, formatos etc, etc, etc.

Option Explicit

Option Compare Text

'Declaradas a nivel de módulo

Dim unidad(0 To 9) As String

Dim decena(0 To 9) As String

Dim centena(0 To 10) As String

Dim deci(0 To 9) As String

Dim otros(0 To 15) As String

Private Sub InicializarArrays()

   'Asignar los valores

   unidad(1) = "UN"

   unidad(2) = "DOS"

   unidad(3) = "TRES"

   unidad(4) = "CUATRO"

   unidad(5) = "CINCO"

   unidad(6) = "SEIS"

   unidad(7) = "SIETE"

   unidad(8) = "OCHO"

   unidad(9) = "NUEVE"

   '

   decena(1) = "DIEZ"

   decena(2) = "VEINTE"

   decena(3) = "TREINTA"

   decena(4) = "CUARENTA"

   decena(5) = "CINCUENTA"

   decena(6) = "SESENTA"

   decena(7) = "SETENTA"

   decena(8) = "OCENTA"

   decena(9) = "NOVENTA"

   '

   centena(1) = "CIENTO"

   centena(2) = "DOSCIENTOS"

   centena(3) = "TRESCIENTOS"

   centena(4) = "CUATROCIENTOS"

   centena(5) = "QUINIENTOS"

   centena(6) = "SEISCIENTOS"

   centena(7) = "SETECIENTOS"

   centena(8) = "OCHOCIENTOS"

   centena(9) = "NOVECIENTOS"

   centena(10) = "CIEN"                'Parche

   '

   deci(1) = "DIECI"

   deci(2) = "VEINTI"

   deci(3) = "TREINTA Y "

   deci(4) = "CUARENTA Y "

   deci(5) = "CINCUENTA Y "

   deci(6) = "SESENTA Y "

   deci(7) = "SETENTA Y "

   deci(8) = "OCHENTA Y "

   deci(9) = "NOVENTA Y "

   '

   otros(1) = "1"

   otros(2) = "2"

   otros(3) = "3"

   otros(4) = "4"

   otros(5) = "5"

   otros(6) = "6"

   otros(7) = "7"

   otros(8) = "8"

   otros(9) = "9"

   otros(10) = "10"

   otros(11) = "ONCE"

   otros(12) = "DOCE"

   otros(13) = "TRECE"

   otros(14) = "CATORCE"

   otros(15) = "QUINCE"

End Sub

Public Function Numero2Letra(ByVal strNum As String, Optional ByVal vLo, Optional ByVal vMoneda, Optional ByVal vCentimos) As String

   '----------------------------------------------------------

   ' Convierte el número strNum en letras          (28/Feb/91)

   ' Versión para Windows                          (25/Oct/96)

   ' Variables estáticas                           (15/May/97)

   ' Parche de "Esteve" <esteve@mur.hnet.es>       (20/May/97)

   ' Revisión para decimales                       (10/Jul/97)

   '----------------------------------------------------------

   Dim i As Integer

   Dim Lo As Integer

   Dim iHayDecimal As Integer          'Posición del signo decimal

   Dim sDecimal As String              'Signo decimal a usar

   Dim sEntero As String

   Dim sFraccion As String

   Dim fFraccion As Single

   Dim sNumero As String

   '

   Dim sMoneda As String

   Dim sCentimos As String

   'Si se especifica, se usarán

   If Not IsMissing(vMoneda) Then

       sMoneda = " " & Trim$(vMoneda) & " "

   Else

       sMoneda = " "

   End If

   If Not IsMissing(vCentimos) Then

       sCentimos = " " & Trim$(vCentimos)

   End If

   'Averiguar el signo decimal

   sNumero = Format$(25.5, "#.#")

   If InStr(sNumero, ".") Then

       sDecimal = "."

   Else

       sDecimal = ","

   End If

   'Si no se especifica el ancho...

   If IsMissing(vLo) Then

       Lo = 0

   Else

       Lo = vLo

   End If

   '

   If Lo Then

       sNumero = Space$(Lo)

   Else

       sNumero = ""

   End If

   'Quitar los espacios que haya por medio

   Do

       i = InStr(strNum, " ")

       If i = 0 Then Exit Do

       strNum = Left$(strNum, i - 1) & Mid$(strNum, i + 1)

   Loop

   'Comprobar si tiene decimales

   iHayDecimal = InStr(strNum, sDecimal)

   If iHayDecimal Then

       sEntero = Left$(strNum, iHayDecimal - 1)

       sFraccion = Mid$(strNum, iHayDecimal + 1) & "00"

       'obligar a que tenga dos cifras

       sFraccion = Left$(sFraccion, 2)

       fFraccion = Val(sFraccion)

       'Si no hay decimales... no agregar nada...

       If fFraccion < 1 Then

           strNum = RTrim$(UnNumero(sEntero) & sMoneda & " EXACTOS")

           If Lo Then

               LSet sNumero = strNum

           Else

               sNumero = strNum

           End If

           Numero2Letra = sNumero

           Exit Function

       End If

       sEntero = UnNumero(sEntero)

       sFraccion = UnNumero(sFraccion)

       '

       strNum = sEntero & sMoneda & "BOLIVARES CON " & sFraccion & sCentimos & " CENTIMOS"

       If Lo Then

           LSet sNumero = RTrim$(strNum)

       Else

           sNumero = RTrim$(strNum)

       End If

       Numero2Letra = sNumero

   Else

       strNum = RTrim$(UnNumero(strNum) & sMoneda & " EXACTOS")

       If Lo Then

           LSet sNumero = strNum

       Else

           sNumero = strNum

       End If

       Numero2Letra = sNumero

   End If

End Function

Private Function UnNumero(ByVal strNum As String) As String

   '----------------------------------------------------------

   'Esta es la rutina principal                    (10/Jul/97)

   'Está separada para poder actuar con decimales

   '----------------------------------------------------------

   Dim lngA As Double

   Dim Negativo As Boolean

   Dim L As Integer

   Dim Una As Boolean

   Dim Millon As Boolean

   Dim Millones As Boolean

   Dim vez As Integer

   Dim MaxVez As Integer

   Dim k As Integer

   Dim strQ As String

   Dim strB As String

   Dim strU As String

   Dim strD As String

   Dim strC As String

   Dim iA As Integer

   '

   Dim strN() As String

   'Si se amplia este valor... no se manipularán bien los números

   Const cAncho = 12

   Const cGrupos = cAncho \ 3

   '

   If unidad(1) <> "UNA" Then

   InicializarArrays

   End If

   'Si se produce un error que se pare el mundo!!!

   On Local Error GoTo 0

   lngA = Abs(CDbl(strNum))

   Negativo = (lngA <> CDbl(strNum))

   strNum = LTrim$(RTrim$(Str$(lngA)))

   L = Len(strNum)

   If lngA < 1 Then

       UnNumero = "CERO"

       Exit Function

   End If

   '

   Una = True

   Millon = False

   Millones = False

   If L < 4 Then Una = False

   If lngA > 999999 Then Millon = True

   If lngA > 1999999 Then Millones = True

   strB = ""

   strQ = strNum

   vez = 0

   ReDim strN(1 To cGrupos)

   strQ = Right$(String$(cAncho, "0") & strNum, cAncho)

   For k = Len(strQ) To 1 Step -3

       vez = vez + 1

       strN(vez) = Mid$(strQ, k - 2, 3)

   Next

   MaxVez = cGrupos

   For k = cGrupos To 1 Step -1

       If strN(k) = "000" Then

           MaxVez = MaxVez - 1

       Else

           Exit For

       End If

   Next

   For vez = 1 To MaxVez

       strU = "": strD = "": strC = ""

       strNum = strN(vez)

       L = Len(strNum)

       k = Val(Right$(strNum, 2))

       If Right$(strNum, 1) = "0" Then

           k = k \ 10

           strD = decena(k)

       ElseIf k > 10 And k < 16 Then

           k = Val(Mid$(strNum, L - 1, 2))

           strD = otros(k)

       Else

           strU = unidad(Val(Right$(strNum, 1)))

           If L - 1 > 0 Then

               k = Val(Mid$(strNum, L - 1, 1))

               strD = deci(k)

           End If

       End If

       '---Parche de Esteve

       If L - 2 > 0 Then

           k = Val(Mid$(strNum, L - 2, 1))

           'Con esto funcionará bien el 100100, por ejemplo...

           If k = 1 Then                       'Parche

               If Val(strNum) = 100 Then       'Parche

                   k = 10                      'Parche

               End If                          'Parche

           End If

           strC = centena(k) & " "

       End If

       '------

       If strU = "UNO" And Left$(strB, 4) = " MIL" Then strU = ""

       strB = strC & strD & strU & " " & strB

       If (vez = 1 Or vez = 3) Then

           If strN(vez + 1) <> "000" Then strB = " MIL " & strB

       End If

       If vez = 2 And Millon Then

           If Millones Then

               strB = " MILLONES " & strB

           Else

               strB = "UN MILLON " & strB

           End If

       End If

   Next

   strB = Trim$(strB)

   If Right$(strB, 3) = "UNO" Then strB = Left$(strB, Len(strB) - 1) & "A"

   Do                              'Quitar los espacios que haya por medio

       iA = InStr(strB, "  ")

       If iA = 0 Then Exit Do

       strB = Left$(strB, iA - 1) & Mid$(strB, iA + 1)

   Loop

   If Left$(strB, 6) = "UNO UN" Then strB = Mid$(strB, 5)

   If Left$(strB, 7) = "UNO MIL" Then strB = Mid$(strB, 5)

   If Right$(strB, 16) <> "MILLONES MIL UNO" Then

       iA = InStr(strB, "MILLONES MIL UN")

       If iA Then strB = Left$(strB, iA + 8) & Mid$(strB, iA + 13)

   End If

   If Right$(strB, 6) = "CIENTO" Then strB = Left$(strB, Len(strB) - 2)

   If Negativo Then strB = "MENOS " & strB

   UnNumero = Trim$(strB)

End Function

SALLY wrote re: Como convertir números a letras
on Mon, Apr 7 2008 11:03

AYUDA... TODAS LAS FUNCIONES ME SIRVEN EN EXCEL... MUCHAS GRACIAS... PERO DESPUÉS DE CERRAR EL ARCHIVO Y VOLVERLO A ABRIR... NADA NO RECONOCE LA FUNCIÓN... PO FAVO AYUDA... MI E-MAIL ES: sally_default@hotmail.com

Martinete wrote re: Como convertir números a letras
on Wed, Apr 16 2008 15:54

Hola que tal, disculpa que pregunte mi hermano, pero fijate que ya mi cabeza va estallar y no puedo encontrar nada mas y recurro a ti.

Mira.

En un formulario que me sirve de catalogo de productos inserte lo siguiente;

El catalogo (formulario) tiene una cuadro de control que me sirve de buscardor,   si yo inserto un codigo de un producto, este me da la informacion del producto, tales como; descripcion, proveedor, precio, ubicacion. Y aparte inserté dos subformularios. Uno es de las entradas de los productos y el otro de las salidas. Están a modo de resumen, despues de esto inserté un cuadro de texto en donde resto las salidas de las entradas, algo asi:

=nz([Subformulario ENTRADA PRODUCTOS PROVEEDOR Consulta6].Formulario![Suma De CANTIDAD],0)-nz([Subformulario PUNTO VENTA Consulta6].Formulario![Suma De CANTIDAD],0)

Cuando hay datos me da correctamente la cantidad que hay en stock, pero si en alguno de los subformularios no hay datos(o valor nulo) este mme da ERROR.

Como podría hacerle? Me podrías ayudar?

Gracias

martin_aguilar_mariscal@hotmail.com

Isaac (abarca_isaac@hotmail.com) wrote re: Como convertir números a letras
on Thu, Apr 17 2008 14:39

Tengo esta pero me hace falta incluir cuando es por ejemplo 1200.00 que diga "mil doscientos con 00/100", osea no se en que parte poner ra que cuando no tenga decimales salga "00/100"

Me puedn ayudar por favor a ver donde debo incluir esto!!??

Function letra(Numero)

Dim Texto

Dim Millones

Dim Miles

Dim Cientos

Dim Decimales

Dim Cadena

Dim CadMillones

Dim CadMiles

Dim CadCientos

Dim caddecimales

Texto = Round(Numero, 2)

Texto = FormatNumber(Texto, 2)

Texto = Right(Space(14) & Texto, 14)

Millones = Mid(Texto, 1, 3)

Miles = Mid(Texto, 5, 3)

Cientos = Mid(Texto, 9, 3)

Decimales = Mid(Texto, 13, 2)

CadMillones = ConvierteCifra(Millones, False)

CadMiles = ConvierteCifra(Miles, False)

CadCientos = ConvierteCifra(Cientos, True)

caddecimales = ConvierteDecimal(Decimales)

If Trim(CadMillones) > "" Then

If Trim(CadMillones) = "UN" Then

Cadena = CadMillones & " MILLON"

Else

Cadena = CadMillones & " MILLONES"

End If

End If

If Trim(CadMiles) > "" Then

If Trim(CadMiles) = "UN" Then

CadMiles = ""

Cadena = Cadena & "" & CadMiles & "MIL"

CadMiles = "UN"

Else

Cadena = Cadena & " " & CadMiles & " MIL"

End If

End If

If Trim(CadMiles) > "001" Then

CadMiles = "MIL"

End If

If Decimales = "00" Then

If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then

Cadena = Cadena & "UNO "

Else

If Miles & Cientos = "000000" Then

Cadena = Cadena & " " & Trim(CadCientos)

Else

Cadena = Cadena & " " & Trim(CadCientos)

End If

letra = Trim(Cadena)

End If

Else

If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then

Cadena = Cadena & "UNO " & "CON " & Trim(caddecimales)

Else

If Millones & Miles & Cientos & Decimales = "000000" Then

Cadena = Cadena & " " & Trim(CadCientos) & " CON  " & Trim(Decimales) & "/100"

Else

Cadena = Cadena & " " & Trim(CadCientos) & " CON  " & Trim(Decimales) & "/100"

End If

letra = Trim(Cadena)

End If

End If

End Function

Function ConvierteCifra(Texto, IsCientos As Boolean)

Dim Centena

Dim Decena

Dim Unidad

Dim txtCentena

Dim txtDecena

Dim txtUnidad

Centena = Mid(Texto, 1, 1)

Decena = Mid(Texto, 2, 1)

Unidad = Mid(Texto, 3, 1)

Select Case Centena

Case "1"

txtCentena = "CIEN"

If Decena & Unidad <> "00" Then

txtCentena = "CIENTO"

End If

Case "2"

txtCentena = "DOSCIENTOS"

Case "3"

txtCentena = "TRESCIENTOS"

Case "4"

txtCentena = "CUATROCIENTOS"

Case "5"

txtCentena = "QUINIENTOS"

Case "6"

txtCentena = "SEISCIENTOS"

Case "7"

txtCentena = "SETECIENTOS"

Case "8"

txtCentena = "OCHOCIENTOS"

Case "9"

txtCentena = "NOVECIENTOS"

End Select

Select Case Decena

Case "1"

txtDecena = "DIEZ"

Select Case Unidad

Case "1"

txtDecena = "ONCE"

Case "2"

txtDecena = "DOCE"

Case "3"

txtDecena = "TRECE"

Case "4"

txtDecena = "CATORCE"

Case "5"

txtDecena = "QUINCE"

Case "6"

txtDecena = "DIECISEIS"

Case "7"

txtDecena = "DIECISIETE"

Case "8"

txtDecena = "DIECIOCHO"

Case "9"

txtDecena = "DIECINUEVE"

End Select

Case "2"

txtDecena = "VEINTE"

If Unidad <> "0" Then

txtDecena = "VEINTI"

End If

Case "3"

txtDecena = "TREINTA"

If Unidad <> "0" Then

txtDecena = "TREINTA Y "

End If

Case "4"

txtDecena = "CUARENTA"

If Unidad <> "0" Then

txtDecena = "CUARENTA Y "

End If

Case "5"

txtDecena = "CINCUENTA"

If Unidad <> "0" Then

txtDecena = "CINCUENTA Y "

End If

Case "6"

txtDecena = "SESENTA"

If Unidad <> "0" Then

txtDecena = "SESENTA Y "

End If

Case "7"

txtDecena = "SETENTA"

If Unidad <> "0" Then

txtDecena = "SETENTA Y "

End If

Case "8"

txtDecena = "OCHENTA"

If Unidad <> "0" Then

txtDecena = "OCHENTA Y "

End If

Case "9"

txtDecena = "NOVENTA"

If Unidad <> "0" Then

txtDecena = "NOVENTA Y "

End If

End Select

If Decena <> "1" Then

Select Case Unidad

Case "1"

If IsCientos = False Then

txtUnidad = "UN"

Else

txtUnidad = "UNO"

End If

Case "2"

txtUnidad = "DOS"

Case "3"

txtUnidad = "TRES"

Case "4"

txtUnidad = "CUATRO"

Case "5"

txtUnidad = "CINCO"

Case "6"

txtUnidad = "SEIS"

Case "7"

txtUnidad = "SIETE"

Case "8"

txtUnidad = "OCHO"

Case "9"

txtUnidad = "NUEVE"

End Select

End If

ConvierteCifra = txtCentena & " " & txtDecena & txtUnidad

End Function

Function ConvierteDecimal(Texto)

Dim Decenadecimal

Dim Unidaddecimal

Dim txtDecenadecimal

Dim txtUnidaddecimal

Decenadecimal = Mid(Texto, 1, 1)

Unidaddecimal = Mid(Texto, 2, 1)

Select Case Decenadecimal

Case "0"

Case "1"

txtDecenadecimal = "DIEZ"

Select Case Unidaddecimal

Case "0"

Case "1"

txtDecenadecimal = "ONCE"

Case "2"

txtDecenadecimal = "DOCE"

Case "3"

txtDecenadecimal = "TRECE"

Case "4"

txtDecenadecimal = "CATORCE"

Case "5"

txtDecenadecimal = "QUINCE"

Case "6"

txtDecenadecimal = "DIECISEIS"

Case "7"

txtDecenadecimal = "DIECISIETE"

Case "8"

txtDecenadecimal = "DIECIOCHO"

Case "9"

txtDecenadecimal = "DIECINUEVE"

End Select

Case "2"

txtDecenadecimal = "VEINTE"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "VEINTI"

End If

Case "3"

txtDecenadecimal = "TREINTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "TREINTA Y "

End If

Case "4"

txtDecenadecimal = "CUARENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "CUARENTA Y "

End If

Case "5"

txtDecenadecimal = "CINCUENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "CINCUENTA Y "

End If

Case "6"

txtDecenadecimal = "SESENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "SESENTA Y "

End If

Case "7"

txtDecenadecimal = "SETENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "SETENTA Y "

End If

Case "8"

txtDecenadecimal = "OCHENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "OCHENTA Y "

End If

Case "9"

txtDecenadecimal = "NOVENTA"

If Unidaddecimal <> "0" Then

txtDecenadecimal = "NOVENTA Y "

End If

End Select

If Decenadecimal <> "1" Then

Select Case Unidaddecimal

Case "1"

txtUnidaddecimal = "UNO"

Case "2"

txtUnidaddecimal = "DOS"

Case "3"

txtUnidaddecimal = "TRES"

Case "4"

txtUnidaddecimal = "CUATRO"

Case "5"

txtUnidaddecimal = "CINCO"

Case "6"

txtUnidaddecimal = "SEIS"

Case "7"

txtUnidaddecimal = "SIETE"

Case "8"

txtUnidaddecimal = "OCHO"

Case "9"

txtUnidaddecimal = "NUEVE"

End Select

End If

If Decenadecimal = 0 And Unidaddecimal = 0 Then

ConvierteDecimal = " "

Else

ConvierteDecimal = txtDecenadecimal & txtUnidaddecimal

End If

End Function

miguel angel wrote re: Como convertir números a letras
on Fri, Apr 25 2008 9:31

como utlizo la funcion de convertir letras a nuero en asp

jvargas wrote re: Como convertir números a letras
on Sat, Apr 26 2008 22:47

Creo que debería funcionar en asp cambiando solo el encabezado de la función:

Cambia esto:

Public Function Num2Text(ByVal value As Double) As String

Por esto otro:

Function Num2Text(ByVal value)

Prueba y nos cuentas :)

nohemi wrote re: Como convertir números a letras
on Wed, Apr 30 2008 22:12

Estoy empezando en ASP NET y quisiera saber como utilizo la funcion de letras a numeros. ya que an llamar la funcion, como indico abajo, siempre me escribe CERO en la caja de texto.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim value As Integer 'or String or Double

       TextBox1.Text = Num2Text(value)

   End Sub

   Public Function Num2Text(ByVal value As Double) As String

       Select Case value

           Case 0 : Num2Text = "CERO"

           Case 1 : Num2Text = "UN"

       ................ End Function

jvargas wrote re: Como convertir números a letras
on Fri, May 2 2008 11:46

Hola Nohemi,

El problema lo tienes aca:

Dim value As Integer 'or String or Double

TextBox1.Text = Num2Text(value)

Si te das cuenta no estás pasando ningun valor a la función, prueba con lo siguiente:

Dim value As Integer

value=123

TextBox1.Text = Num2Text(value)

Saludos,

Jhonny Vargas P.

Jose Vaquero wrote re: Como convertir números a letras
on Mon, May 26 2008 16:05

Hola Que tal  estoy haciendo una base de datos la cual debo registras datos como:

Folio:

Nombre de Solicitante:

Importe:

Fecha:

Banco:

Cuenta:

Observaciones:

Todo esta bien la tabla y el Formulario en donde tengo problemas es en el informe ya que no se como colocar el codigo para que el importe sea convertido en letras.

Les agradeceria mucho su ayuda ya que llevo muy poquito en access.

Ejemplo de Convercion (Dos Mil Quinientos treinta y tres pesos 83/100 M.N.)

De Antemano Gracias

Arael82 wrote re: Como convertir números a letras
on Mon, May 26 2008 22:48

Implemente satisfactoriamente el algoritmo en un sistema... mejores resultados imposible obtener, lo recomiendo ampliamente

arael82@gmail.com

oscar!! wrote re: Como convertir números a letras
on Wed, May 28 2008 9:44

como le agrego la palabra pesos al final ???

rix wrote re: Como convertir números a letras
on Wed, Sep 17 2008 11:05

Funciona a la perfeccion, pero tengo una duda. Para usarlo en un PDF necesito javascript cual tendria q ser el codigo?

Gracias espero q alguien responda pronto =)

Geller wrote re: Como convertir números a letras
on Tue, Oct 7 2008 13:23

...ok soy algo novato,yo en mi caso lo que quiero es algo mas simple (pienso yo) ya que no requiere ninguna implementacion externa, es esto mismo convertir numeros a letras en VB.net pero sea una aplicacion en consola...yo ya estoy es totalmente mareado de visitar web tras web hasta en ingles y nada...

sludos espero puedan ayudarme, el codigo debe de ser de lo mas basico.

perdon por las molestias.

geller90@hotmail.com

HELEN wrote re: Como convertir números a letras
on Wed, Oct 8 2008 12:44

MR.VARGAS.

Ayudeme por favor necesito convertir 9.8 en NUEVE PUNTO OCHO en excel 2003 soy ignorante en le materia manejo lo elemental de excel. gracias

GONZALO wrote re: Como convertir números a letras
on Tue, Oct 14 2008 12:53

hola un no se como aplicar el codigo sin que redondehe la cantidad y  usarlo con la leyenda de "Pesos 00/100  M.N."

tengo el texto31 en donde me aparece la cantidad en numero y el texto35 donde quiere poner la cantidad en Letra.

ojala que alguien me pueda ayudar.. este es mi correo gonzalo403@hotmail.com

gracias!

cesar guillen wrote re: Como convertir números a letras
on Tue, Oct 21 2008 13:18

Necesito saber como se llama cada cuadro de texto para elaborar el form1 y cuantos label voy a usar y cuantos textbox.

les dejo mi correo por si tienen la amabilidad de poder ayudarme .

Gracias .

C.guillen@hotmail.es

Option Explicit

Option Compare Text

'Declaradas a nivel de módulo

Dim unidad(0 To 9) As String

Dim decena(0 To 9) As String

Dim centena(0 To 10) As String

Dim deci(0 To 9) As String

Dim otros(0 To 15) As String

Private Sub InicializarArrays()

  'Asignar los valores

  unidad(1) = "UN"

  unidad(2) = "DOS"

  unidad(3) = "TRES"

  unidad(4) = "CUATRO"

  unidad(5) = "CINCO"

  unidad(6) = "SEIS"

  unidad(7) = "SIETE"

  unidad(8) = "OCHO"

  unidad(9) = "NUEVE"

  '

  decena(1) = "DIEZ"

  decena(2) = "VEINTE"

  decena(3) = "TREINTA"

  decena(4) = "CUARENTA"

  decena(5) = "CINCUENTA"

  decena(6) = "SESENTA"

  decena(7) = "SETENTA"

  decena(8) = "OCENTA"

  decena(9) = "NOVENTA"

  '

  centena(1) = "CIENTO"

  centena(2) = "DOSCIENTOS"

  centena(3) = "TRESCIENTOS"

  centena(4) = "CUATROCIENTOS"

  centena(5) = "QUINIENTOS"

  centena(6) = "SEISCIENTOS"

  centena(7) = "SETECIENTOS"

  centena(8) = "OCHOCIENTOS"

  centena(9) = "NOVECIENTOS"

  centena(10) = "CIEN"                'Parche

  '

  deci(1) = "DIECI"

  deci(2) = "VEINTI"

  deci(3) = "TREINTA Y "

  deci(4) = "CUARENTA Y "

  deci(5) = "CINCUENTA Y "

  deci(6) = "SESENTA Y "

  deci(7) = "SETENTA Y "

  deci(8) = "OCHENTA Y "

  deci(9) = "NOVENTA Y "

  '

  otros(1) = "1"

  otros(2) = "2"

  otros(3) = "3"

  otros(4) = "4"

  otros(5) = "5"

  otros(6) = "6"

  otros(7) = "7"

  otros(8) = "8"

  otros(9) = "9"

  otros(10) = "10"

  otros(11) = "ONCE"

  otros(12) = "DOCE"

  otros(13) = "TRECE"

  otros(14) = "CATORCE"

  otros(15) = "QUINCE"

End Sub

Public Function Numero2Letra(ByVal strNum As String, Optional ByVal vLo, Optional ByVal vMoneda, Optional ByVal vCentimos) As String

  '----------------------------------------------------------

  ' Convierte el número strNum en letras          (28/Feb/91)

  ' Versión para Windows                          (25/Oct/96)

  ' Variables estáticas                           (15/May/97)

  ' Parche de "Esteve" <esteve@mur.hnet.es>       (20/May/97)

  ' Revisión para decimales                       (10/Jul/97)

  '----------------------------------------------------------

  Dim i As Integer

  Dim Lo As Integer

  Dim iHayDecimal As Integer          'Posición del signo decimal

  Dim sDecimal As String              'Signo decimal a usar

  Dim sEntero As String

  Dim sFraccion As String

  Dim fFraccion As Single

  Dim sNumero As String

  '

  Dim sMoneda As String

  Dim sCentimos As String

  'Si se especifica, se usarán

  If Not IsMissing(vMoneda) Then

      sMoneda = " " & Trim$(vMoneda) & " "

  Else

      sMoneda = " "

  End If

  If Not IsMissing(vCentimos) Then

      sCentimos = " " & Trim$(vCentimos)

  End If

  'Averiguar el signo decimal

  sNumero = Format$(25.5, "#.#")

  If InStr(sNumero, ".") Then

      sDecimal = "."

  Else

      sDecimal = ","

  End If

  'Si no se especifica el ancho...

  If IsMissing(vLo) Then

      Lo = 0

  Else

      Lo = vLo

  End If

  '

  If Lo Then

      sNumero = Space$(Lo)

  Else

      sNumero = ""

  End If

  'Quitar los espacios que haya por medio

  Do

      i = InStr(strNum, " ")

      If i = 0 Then Exit Do

      strNum = Left$(strNum, i - 1) & Mid$(strNum, i + 1)

  Loop

  'Comprobar si tiene decimales

  iHayDecimal = InStr(strNum, sDecimal)

  If iHayDecimal Then

      sEntero = Left$(strNum, iHayDecimal - 1)

      sFraccion = Mid$(strNum, iHayDecimal + 1) & "00"

      'obligar a que tenga dos cifras

      sFraccion = Left$(sFraccion, 2)

      fFraccion = Val(sFraccion)

      'Si no hay decimales... no agregar nada...

      If fFraccion < 1 Then

          strNum = RTrim$(UnNumero(sEntero) & sMoneda & " EXACTOS")

          If Lo Then

              LSet sNumero = strNum

          Else

              sNumero = strNum

          End If

          Numero2Letra = sNumero

          Exit Function

      End If

      sEntero = UnNumero(sEntero)

      sFraccion = UnNumero(sFraccion)

      '

      strNum = sEntero & sMoneda & "BOLIVARES CON " & sFraccion & sCentimos & " CENTIMOS"

      If Lo Then

          LSet sNumero = RTrim$(strNum)

      Else

          sNumero = RTrim$(strNum)

      End If

      Numero2Letra = sNumero

  Else

      strNum = RTrim$(UnNumero(strNum) & sMoneda & " EXACTOS")

      If Lo Then

          LSet sNumero = strNum

      Else

          sNumero = strNum

      End If

      Numero2Letra = sNumero

  End If

End Function

Private Function UnNumero(ByVal strNum As String) As String

  '----------------------------------------------------------

  'Esta es la rutina principal                    (10/Jul/97)

  'Está separada para poder actuar con decimales

  '----------------------------------------------------------

  Dim lngA As Double

  Dim Negativo As Boolean

  Dim L As Integer

  Dim Una As Boolean

  Dim Millon As Boolean

  Dim Millones As Boolean

  Dim vez As Integer

  Dim MaxVez As Integer

  Dim k As Integer

  Dim strQ As String

  Dim strB As String

  Dim strU As String

  Dim strD As String

  Dim strC As String

  Dim iA As Integer

  '

  Dim strN() As String

  'Si se amplia este valor... no se manipularán bien los números

  Const cAncho = 12

  Const cGrupos = cAncho \ 3

  '

  If unidad(1) <> "UNA" Then

  InicializarArrays

  End If

  'Si se produce un error que se pare el mundo!!!

  On Local Error GoTo 0

  lngA = Abs(CDbl(strNum))

  Negativo = (lngA <> CDbl(strNum))

  strNum = LTrim$(RTrim$(Str$(lngA)))

  L = Len(strNum)

  If lngA < 1 Then

      UnNumero = "CERO"

      Exit Function

  End If

  '

  Una = True

  Millon = False

  Millones = False

  If L < 4 Then Una = False

  If lngA > 999999 Then Millon = True

  If lngA > 1999999 Then Millones = True

  strB = ""

  strQ = strNum

  vez = 0

  ReDim strN(1 To cGrupos)

  strQ = Right$(String$(cAncho, "0") & strNum, cAncho)

  For k = Len(strQ) To 1 Step -3

      vez = vez + 1

      strN(vez) = Mid$(strQ, k - 2, 3)

  Next

  MaxVez = cGrupos

  For k = cGrupos To 1 Step -1

      If strN(k) = "000" Then

          MaxVez = MaxVez - 1

      Else

          Exit For

      End If

  Next

  For vez = 1 To MaxVez

      strU = "": strD = "": strC = ""

      strNum = strN(vez)

      L = Len(strNum)

      k = Val(Right$(strNum, 2))

      If Right$(strNum, 1) = "0" Then

          k = k \ 10

          strD = decena(k)

      ElseIf k > 10 And k < 16 Then

          k = Val(Mid$(strNum, L - 1, 2))

          strD = otros(k)

      Else

          strU = unidad(Val(Right$(strNum, 1)))

          If L - 1 > 0 Then

              k = Val(Mid$(strNum, L - 1, 1))

              strD = deci(k)

          End If

      End If

      '---Parche de Esteve

      If L - 2 > 0 Then

          k = Val(Mid$(strNum, L - 2, 1))

          'Con esto funcionará bien el 100100, por ejemplo...

          If k = 1 Then                       'Parche

              If Val(strNum) = 100 Then       'Parche

                  k = 10                      'Parche

              End If                          'Parche

          End If

          strC = centena(k) & " "

      End If

      '------

      If strU = "UNO" And Left$(strB, 4) = " MIL" Then strU = ""

      strB = strC & strD & strU & " " & strB

      If (vez = 1 Or vez = 3) Then

          If strN(vez + 1) <> "000" Then strB = " MIL " & strB

      End If

      If vez = 2 And Millon Then

          If Millones Then

              strB = " MILLONES " & strB

          Else

              strB = "UN MILLON " & strB

          End If

      End If

  Next

  strB = Trim$(strB)

  If Right$(strB, 3) = "UNO" Then strB = Left$(strB, Len(strB) - 1) & "A"

  Do                              'Quitar los espacios que haya por medio

      iA = InStr(strB, "  ")

      If iA = 0 Then Exit Do

      strB = Left$(strB, iA - 1) & Mid$(strB, iA + 1)

  Loop

  If Left$(strB, 6) = "UNO UN" Then strB = Mid$(strB, 5)

  If Left$(strB, 7) = "UNO MIL" Then strB = Mid$(strB, 5)

  If Right$(strB, 16) <> "MILLONES MIL UNO" Then

      iA = InStr(strB, "MILLONES MIL UN")

      If iA Then strB = Left$(strB, iA + 8) & Mid$(strB, iA + 13)

  End If

  If Right$(strB, 6) = "CIENTO" Then strB = Left$(strB, Len(strB) - 2)

  If Negativo Then strB = "MENOS " & strB

  UnNumero = Trim$(strB)

End Function

Agreval wrote re: Como convertir números a letras
on Wed, Oct 29 2008 15:56

Muy buen codigo, perfecto, muchas gracias.

K'781116 wrote Como convertir números a letras
on Sat, Nov 8 2008 0:01

Esta chido este algoritmo pero ya me dio un error (al menos a mi me aparece) traten de convertir este número:

123456789

A parte, el compilador me marca error ya que tengo Option Strict On el error esta en las instrucciones if, ya que se esta comparando un Integer con un Boolean, lo cual esto es incompatible con Option Strict On

Andres wrote re: Como convertir números a letras
on Wed, Nov 12 2008 7:21

Muchas gracias men, esta formula me resulto de maravilla, he usado varios codigos, pero no me resultaba a la perfeccion.

Nuevamente gracias por tu aporte.

Andres

Santiago de Chile

martin wrote mejor pon otracosa
on Thu, Nov 13 2008 10:26

esta muy mal lo de convertir los numeros romanos en letras

Karina wrote re: Como convertir números a letras
on Tue, Nov 25 2008 19:08

Muchas gracias por compartir el código, funciona perfecto ;)

CXN wrote re: Como convertir números a letras
on Thu, Dec 4 2008 6:01

Hola a todos, que decir que estuve usando el codigo de conversion para access y cuando trato de usar este codigo como modulo los numero mayores de 5 al final ejemplo: 656 me pone "seiscientos cincuenta y seis" osea me pose un numero por encima y cuando trato de arreglarlo poniendo -1 al final esos numero si los corrige pero los menoes de 5 entonces le quita uno. No se si esto solo me pasa a mi y a otros trambien el caso es ke no se koco arreglarlo... alguien puede ayudar?

gracias de antemano.

CXN wrote re: Como convertir números a letras
on Thu, Dec 4 2008 14:49

Hola nuevamente acabo de darme cuenta que es el problema anteriormente decrito por mi y es asunto es que cuando uso decimales, la funcion me redondea la cifra por ejemplo si uso 342.70 ya redondea a 342.00 y en el resultado se muestra y eso no lo necesito pq me cambia el resultado. alguien sabe como solucionar esto?

Leonarave wrote Excelente
on Thu, Jan 15 2009 22:03

Muy bueno el código, tenía tiempo buscándolo.

jose miguel wrote re: Como convertir números a letras
on Fri, Feb 6 2009 23:16

Si, no se mucho de programacion, pero es que estoy haciendo unas facturas en exel, y no se como se hace para poner el codigo en exel para que en una casilla me salga en letras el TOTAL de la factura, GRACIAS POR LA AYUDA QUE ME PUEDAN BRINDAR

Azarel wrote re: Como convertir números a letras
on Wed, Mar 4 2009 21:42

Hola bueno estuve dandome de topoes al no poder usar sus codigos puesto que unos ponen un codigo y luego otro pone el mismo pero con diferentes variables y dicen que le agregaron no se que y ni si quiera ponen en donde ni como le hicieron miren yo hice esto, pruebenlo y si les sirve lo adecuan, para los centavos solo puse en lugar de un TextBox para los centavos, un MaskTextBox y lo adecue solo para que puedan introducir 2 numeros pueden usarlo con la misma funcion de los pesos obvio el masktextbox solo permite lo numeros que tu quieras asi me evite problemas:

Public Class Form1

   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

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim numero As Integer

       Dim numero2 As Integer

       If TextBox1.Text = "" Or TextBox2.Text = "" Then

           MsgBox("Debe poner todos los datos, pesos y centavos", MsgBoxStyle.OkOnly, "Error")

       Else

           numero = TextBox1.Text

           numero2 = TextBox2.Text

'Aqui la linea comentada pueden poner que los centavos aparezcan en numero & numero2 & , o que aparezcan en text solo cambien la linea = solo que en lugar de poner $ numero2 & "/100 M.N. " ponen Num2Texto(numero2) y listo, espero les sirva de algo =)

           pesos.Text = Num2Text(numero) & " PESOS " & numero2 & "/100 M.N."

           Me.Hide()

           My.Forms.ImpresionHSBC.Show()

       End If

   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       TextBox1.Focus()

   End Sub

End Class

adriana rosales wrote re: Como convertir números a letras
on Thu, Apr 2 2009 15:32

hola la verdad no entiendo mucho de esto he estado intentando hacer la operacion en macros pero no tengo ni idea de como

no tengo muchos conocimientos de esto asi que ojala y me puedas ayuda a resolver paso a paso para instalar todo lo anterior gracias

Gustavo wrote re: Como convertir números a letras
on Thu, Jun 18 2009 12:36

Facil de usar, simplemente un exquisito codigo.

Gracias!!

Manuel wrote re: Como convertir números a letras
on Tue, Jun 23 2009 20:35

Excelente codigo de vino de maravillas. Solo estoy teniendo problemas con la parte de decimales, si alguien me da una mano se agradece!.

GRacias!!

Walterizo wrote re: Como convertir números a letras
on Sun, Jun 28 2009 15:34

Me ahorro tiempo de programación, lo pase a MSSQL ya que lo necesitaba para la base de datos, el código sirve desde la versión 2000, les dejo el código convertido para una función

wr

Create Function dbo.Num2Text(@valor money)

returns varchar(500)

as

begin

  declare @textoValor varchar(500)

  Select @textoValor = Case when @valor = 0 then 'CERO'

                            when @valor = 1 then 'UN'

                            when @valor = 2 then 'DOS'

                            when @valor = 3 then 'TRES'

                            when @valor = 4 then 'CUATRO'

                            when @valor = 5 then 'CINCO'

                            when @valor = 6 then 'SEIS'

                            when @valor = 7 then 'SIETE'

                            when @valor = 8 then 'OCHO'

                            when @valor = 9 then 'NUEVE'

                            when @valor = 10 then 'DIEZ'

                            when @valor = 11 then 'ONCE'

                            when @valor = 12 then 'DOCE'

                            when @valor = 13 then 'TRECE'

                            when @valor = 14 then 'CATORCE'

                            when @valor = 15 then 'QUINCE'

                            when @valor < 20 then 'DIECI' + dbo.Num2Text(@valor - 10)

                            when @valor = 20 then 'VEINTE'

                            when @valor < 30 then 'VEINTI' + dbo.Num2Text(@valor - 20)

                            when @valor = 30 then 'TREINTA'

                            when @valor = 40 then 'CUARENTA'

                            when @valor = 50 then 'CINCUENTA'

                            when @valor = 60 then 'SESENTA'

                            when @valor = 70 then 'SETENTA'

                            when @valor = 80 then 'OCHENTA'

                            when @valor = 90 then 'NOVENTA'

                            when @valor < 100 then dbo.Num2Text(floor(@valor / 10) * 10) + ' Y ' + dbo.Num2Text(@valor % 10)

                            when @valor = 100 then 'CIEN'

                            when @valor < 200 then 'CIENTO ' + dbo.Num2Text(@valor - 100)

                            when @valor in (200, 300, 400, 600, 800) then dbo.Num2Text(floor(@valor / 100)) + 'CIENTOS'

                            when @valor = 500 then 'QUINIENTOS'

                            when @valor = 700 then 'SETECIENTOS'

                            when @valor = 900 then 'NOVECIENTOS'

                            when @valor < 1000 then dbo.Num2Text(floor(@valor / 100) * 100) + ' ' + dbo.Num2Text(@valor % 100)

                            when @valor = 1000 then 'MIL'

                            when @valor < 2000 then 'MIL ' + dbo.Num2Text(@valor % 1000)

                            when @valor < 1000000 then case when @valor % 1000 > 0

                                                            then dbo.Num2Text(floor(@valor / 1000)) + ' MIL' + ' ' + dbo.Num2Text(@valor % 1000)

                                                            else dbo.Num2Text(floor(@valor / 1000)) + ' MIL'

                                                       end

                            when @valor = 1000000 then 'UN MILLON'

                            when @valor < 2000000 then 'UN MILLON ' + dbo.Num2Text(@valor % 1000000)

                            when @valor < 1000000000000.0 then case when (@valor - floor(@valor / 1000000) * 1000000) > 0

                                                                    then dbo.Num2Text(floor(@valor / 1000000)) + ' MILLONES ' + dbo.Num2Text(@valor - floor(@valor / 1000000) * 1000000)

                                                                    else dbo.Num2Text(floor(@valor / 1000000)) + ' MILLONES '

                                                               end

                            when @valor = 1000000000000.0 then 'UN BILLON'

                            when @valor < 2000000000000.0 then 'UN BILLON ' + dbo.Num2Text(@valor - floor(@valor / 1000000000000.0) * 1000000000000.0)

                            else case when (@valor - floor(@valor / 1000000000000.0) * 1000000000000.0) > 0

                                      then dbo.Num2Text(floor(@valor / 1000000000000.0)) + ' BILLONES'

                                      else dbo.Num2Text(floor(@valor / 1000000000000.0)) + ' BILLONES' + ' ' + dbo.Num2Text(@valor - floor(@valor / 1000000000000.0) * 1000000000000.0)

                                 end

                       end

  return(@textoValor)

end

Carol wrote re: Como convertir números en asteriscos
on Sun, Jun 28 2009 18:28

hola necesito q me ayuden quiero convertir una contraseña en asteriscos

Horacio wrote re: Como convertir números a letras
on Sun, Jul 12 2009 14:36

Estimados estoy tratando de implementar es fucnion en una base de Access que uso para facturar y no entiendo como hay que cargarla/hacerla funcionar. Si alguien me pudiese ayudar estare muy agradecido. Desde ya muchas gracias. Horacio

Richard wrote re: Como convertir números a letras
on Tue, Jul 21 2009 10:04

Hola amigo espero que me ayuden... tengo una problema kisiera el siguiente script que funciona en MSSQL SERVER 2000 a un script MySQL 5.x:

Create Function dbo.Num2Text(@valor money)

returns varchar(500)

as

begin

 declare @textoValor varchar(500)

 Select @textoValor = Case when @valor = 0 then 'CERO'

                           when @valor = 1 then 'UN'

                           when @valor = 2 then 'DOS'

                           when @valor = 3 then 'TRES'

                           when @valor = 4 then 'CUATRO'

                           when @valor = 5 then 'CINCO'

                           when @valor = 6 then 'SEIS'

                           when @valor = 7 then 'SIETE'

                           when @valor = 8 then 'OCHO'

                           when @valor = 9 then 'NUEVE'

                           when @valor = 10 then 'DIEZ'

                           when @valor = 11 then 'ONCE'

                           when @valor = 12 then 'DOCE'

                           when @valor = 13 then 'TRECE'

                           when @valor = 14 then 'CATORCE'

                           when @valor = 15 then 'QUINCE'

                           when @valor < 20 then 'DIECI' + dbo.Num2Text(@valor - 10)

                           when @valor = 20 then 'VEINTE'

                           when @valor < 30 then 'VEINTI' + dbo.Num2Text(@valor - 20)

                           when @valor = 30 then 'TREINTA'

                           when @valor = 40 then 'CUARENTA'

                           when @valor = 50 then 'CINCUENTA'

                           when @valor = 60 then 'SESENTA'

                           when @valor = 70 then 'SETENTA'

                           when @valor = 80 then 'OCHENTA'

                           when @valor = 90 then 'NOVENTA'

                           when @valor < 100 then dbo.Num2Text(floor(@valor / 10) * 10) + ' Y ' + dbo.Num2Text(@valor % 10)

                           when @valor = 100 then 'CIEN'

                           when @valor < 200 then 'CIENTO ' + dbo.Num2Text(@valor - 100)

                           when @valor in (200, 300, 400, 600, 800) then dbo.Num2Text(floor(@valor / 100)) + 'CIENTOS'

                           when @valor = 500 then 'QUINIENTOS'

                           when @valor = 700 then 'SETECIENTOS'

                           when @valor = 900 then 'NOVECIENTOS'

                           when @valor < 1000 then dbo.Num2Text(floor(@valor / 100) * 100) + ' ' + dbo.Num2Text(@valor % 100)

                           when @valor = 1000 then 'MIL'

                           when @valor < 2000 then 'MIL ' + dbo.Num2Text(@valor % 1000)

                           when @valor < 1000000 then case when @valor % 1000 > 0

                                                           then dbo.Num2Text(floor(@valor / 1000)) + ' MIL' + ' ' + dbo.Num2Text(@valor % 1000)

                                                           else dbo.Num2Text(floor(@valor / 1000)) + ' MIL'

                                                      end

                           when @valor = 1000000 then 'UN MILLON'

                           when @valor < 2000000 then 'UN MILLON ' + dbo.Num2Text(@valor % 1000000)

                           when @valor < 1000000000000.0 then case when (@valor - floor(@valor / 1000000) * 1000000) > 0

                                                                   then dbo.Num2Text(floor(@valor / 1000000)) + ' MILLONES ' + dbo.Num2Text(@valor - floor(@valor / 1000000) * 1000000)

                                                                   else dbo.Num2Text(floor(@valor / 1000000)) + ' MILLONES '

                                                              end

                           when @valor = 1000000000000.0 then 'UN BILLON'

                           when @valor < 2000000000000.0 then 'UN BILLON ' + dbo.Num2Text(@valor - floor(@valor / 1000000000000.0) * 1000000000000.0)

                           else case when (@valor - floor(@valor / 1000000000000.0) * 1000000000000.0) > 0

                                     then dbo.Num2Text(floor(@valor / 1000000000000.0)) + ' BILLONES'

                                     else dbo.Num2Text(floor(@valor / 1000000000000.0)) + ' BILLONES' + ' ' + dbo.Num2Text(@valor - floor(@valor / 1000000000000.0) * 1000000000000.0)

                                end

                      end

 return(@textoValor)

end

ZNoralba wrote re: Como convertir números a letras
on Fri, Jul 31 2009 11:33

Hola... me encántó esta función y me sirvió de mucho, solo que no sé como eliminar la omisión del "DE" en algunos casos, como UN MILLON "DE" BOLÍVARES"

Gracias... por favor si me pueden ayudar envienme la solución a mi correo electrónico

znoralba@hotmail.com

Gracias nuevamente

angie wrote re: Como convertir números a letras
on Tue, Aug 4 2009 17:54

alguien me puede decir que debo hacer para que el algoritmo me funcione en excel? gracias lanman_a@hotmail.com

leidy wrote re: Como convertir números a letras
on Fri, Sep 18 2009 11:29

Este codigo de convertir numeros a letras es super a mi me sirvio muchisimo pero estuve tratando de encontrar un forma para que cuado digito 1 me salga uno y no un, pero si cambio case 1 = "uno" lo que son 1´000.000 me saldra uno millones y lo correcto es un millon pero para 1 lo correcto es uno y no un. y ahora tambien lo necesito para pesos y centavos y viend comentarios boy a hacer los cambios para veer si me funcionan.

leidyjho wrote re: Como convertir números a letras
on Fri, Sep 18 2009 11:31

Este codigo de convertir numeros a letras es super a mi me sirvio muchisimo pero estuve tratando de encontrar un forma para que cuado digito 1 me salga uno y no un, pero si cambio case 1 = "uno" lo que son 1´000.000 me saldra uno millones y lo correcto es un millon pero para 1 lo correcto es uno y no un. y ahora tambien lo necesito para pesos y centavos y viend comentarios boy a hacer los cambios para veer si me funcionan.

cjdogg wrote re: Como convertir números a letras
on Tue, Sep 22 2009 8:49

Con algunos cambios me sirvió perfecto. Muchas gracias, un código muy útil.

Elvis wrote re: Como convertir números a letras
on Fri, Sep 25 2009 18:39

Se le agradece la ayuda de todos.

jorge wrote re: Como convertir números a letras
on Fri, Oct 9 2009 15:46

hola necesito la ayuda sobre este problema en visual .net modo consola en donde ingreso en numero por teclado y arroja el resultado en palabras

desde ya gracias por su ayuda

paula wrote re: Como convertir números a letras
on Mon, Oct 12 2009 14:16

no entiendo nada es un royooooooooooo

Esteban Tobar wrote re: Como convertir números a letras
on Thu, Oct 15 2009 14:35

Estimado, si tuvieses la amabilidad de enviarme por mail esta macro, yo hace años que la uso en excel para el tema de los sueldos y las facturas, pero ahora exportamos y a los gringos hay que enviarles todo en inglés, no tengo Vb sólo office XP no sé si con el access pueda cambiar en el código de uno a one y de dos a two, etc.

Muchas gracias de antemano.

ferro.olsoetd@gmail.com

FOReNeo wrote re: Como convertir números a letras
on Sat, Oct 31 2009 16:03

pss yo asi lo hice, para que separara decimales, y me mostrara la palabra pesos y 00/100 M.N.

----

Private a, b As Double

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       sacardecimal(TextBox1.Text)

       If b = 0 Then

           TextBox2.Text = Num2Text(a) & " PESOS" & " 00/100 M.N."

       Else

           TextBox2.Text = Num2Text(a) & " PESOS" & " " & b & "/100 M.N."

       End If

   End Sub

   Public Sub sacardecimal(ByVal value As String)

       Dim ente, valor, c As String

       Dim deci

       ente = "" : valor = ""

       For i As Integer = 1 To Len(value)

           c = Mid(value, i, 1)

           If c = "." Then

               deci = Split(value, ".")

               b = deci(1)

               GoTo 1

           Else

               valor = valor & c

           End If

       Next

       b = 0

1:      a = valor

   End Sub

jose antonio wrote re: Como convertir números a letras
on Wed, Nov 4 2009 12:35

necesito para que en una factura, me salga tambien el importe en letra esto es un ejemplo de lo que quiero:

Importe: 345,65 y en letra debe decir:

TRESCIENTAS CUARENTA Y CINCO CON SESENTA Y CINCO CENTIMOS, si hay alguien y me dice como ponerlo.

jose antonio wrote re: Como convertir números a letras
on Wed, Nov 4 2009 16:34

necesito para que en una factura, me salga tambien el importe en letra esto es un ejemplo de lo que quiero:

Importe: 345,65 y en letra debe decir:

TRESCIENTAS CUARENTA Y CINCO CON SESENTA Y CINCO CENTIMOS, si hay alguien y me dice como ponerlo.

Teco wrote re: Como convertir números a letras
on Thu, Nov 5 2009 13:34

Hola quisiera saber bien que hacen las lineas que tienen el operador Mod. GRacias x su aporte

Ale wrote re: Como convertir números a letras
on Fri, Nov 27 2009 2:52

Hola! esta muy bien el codigo

Pero podría alguien decirme como lo aplico en matlab

Gracias!!!!!!!

laura wrote re: Como convertir números a letras
on Sat, Jan 23 2010 19:45

como convertir los numeros 100001001001

30000003030000030

2005724568903

285401123456789107645

JMANUEL wrote re: Como convertir números a letras
on Sun, Jan 31 2010 18:32

GRACIAS POR EL APORTE, LO MEJOR QUE ENCONTRE A COMPARACION DE OTRAS PAGINAS

mabe wrote re: Como convertir números a letras
on Mon, Feb 1 2010 17:21

cual es el valor en numero de la  letra a

beto wrote re: Como convertir números a letras
on Sat, Feb 20 2010 14:20

aqui les dejo el codigo para poner en modo consola ya que vi que algunos tenian esa inquietud:

'24. Cree un programa que lea un numero y muestre en pantalla en numero y letra

Module Module1

   Sub Main()

       Dim n As Integer

       Console.WriteLine("ingrese n")

       n = Console.ReadLine

       Console.WriteLine(Num2Text(n))

       Console.ReadLine()

   End Sub

   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

End Module

Chavira wrote re: Como convertir números a letras ACCESS 2007
on Mon, Mar 1 2010 16:32

Como puedo convertir numeros a letras en ACcess para los importes de una factura.

Gracias

aycc wrote re: Como convertir números a letras
on Thu, Apr 8 2010 0:37

¡¡¡Super!!! D.T.B. gracias también victor.

Saludos . .

RIKOLO wrote re: Como convertir números a letras
on Mon, May 17 2010 11:52

HOLA BUEN DIA TENGO UN ABASE DE DATOS EN DONDE HICE UN INFORME QUE ME MUSTRA  LA FACTURA Y EL IMPORTE CON NUMERO PERO QUIEREO CON LETRA TAMBIEN, YA PEGUE EL CODIGO EN UN MODULO AHORA QUE SIGUE PARA QUE ME DE EL RESULTADO EN LETRA????

marvinL wrote re: Como convertir números a letras
on Thu, May 27 2010 16:41

A RIKOLO: en tu tabla debes de crear un campo que acepte texto luego de haberlo colocado en tu formulario indicale pormedio de un evento que despues que la etiqueta "supongo" creada se actualice que tu campo de texto nuevo tambien se actualice. ejemplo.

valor_letras=textoletras. de esta manera quedara guardado en el registro y podras verlo en un informe si necesidad de hacer la formula.

GINO wrote re: Como convertir números a letras
on Mon, May 31 2010 12:06

UNA PREGUNTA PUEDEN ESPECIFICAR DONDE VAN LOS CODIGOS PARA PODER EJECUTARLO SI FUERA POSIBLE ..LES DEJO MI MSN SI PUEDEN ME LO MANDAN AI PORFA SE LOS AGRADECERIA MUCHO...gersonn_12@hotmail.com......gracias..

Osga wrote re: Como convertir números a letras
on Sun, Jun 13 2010 13:49

Gracias, por el codigo es genial, me haver ayudado mucho.... Mil Gracias..

caritolav wrote re: Como convertir números a letras
on Tue, Jul 13 2010 16:31

dioooooos por fin alguien que me ayudo!

Add a Comment

(optional)  
(optional)
(required)  
Remember Me?
If you can't read this number refresh your screen
Enter the numbers above: