Home > Foro de Excel >

Debates de Excel > Ahi les va el codigo de numero a letras

Grupo de Excel
Foro de Excel
18136 Debates | 2009 Documentos | 1 Vídeo | 1 Test | 1 Blog | 675 Imágenes | 16635 Miembros

Ahi les va el codigo de numero a letras

Escrito por Andres Real Alvarez el 05/01/2007

HOLA A TODOS HERMANOS MIOS QUE DIOS LOS PROTEGA SIEMPRE Y LOS CUIDE

HERRAMIENTAS,MACRO,EDITOR DE VB,CREAS UN MODULO Y PEGAS EL CODIGO A SI DE FACIL.
LA FORMULA ES =CANTIDADENLETRA( A2)

Function CantidadEnLetra(tyCantidad As Currency) As String

Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero

tyCantidad = Round(tyCantidad, 2)

lyCantidad = Int(tyCantidad)

lyCentavos = (tyCantidad - lyCantidad) * 100

laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")

laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")

laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

lnNumeroBloques = 1

Do

lnPrimerDigito = 0

lnSegundoDigito = 0

lnTercerDigito = 0

lcBloque = ""

lnBloqueCero = 0

For i = 1 To 3

lnDigito = lyCantidad Mod 10

If lnDigito <> 0 Then

Select Case i

Case 1

lcBloque = " " & laUnidades(lnDigito - 1)

lnPrimerDigito = lnDigito

Case 2

If lnDigito <= 2 Then

lcBloque = " " & laUnidades(lnDigito * 10) + lnPrimerDigito - 1)

Else

lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque

End If

lnSegundoDigito = lnDigito

Case 3

lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque

lnTercerDigito = lnDigito

End Select

Else

lnBloqueCero = lnBloqueCero + 1

End If

lyCantidad = Int(lyCantidad / 10)

If lyCantidad = 0 Then

Exit For

End If

Next i

Select Case lnNumeroBloques

Case 1

CantidadEnLetra = lcBloque

Case 2

CantidadEnLetra = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & CantidadEnLetra

Case 3

CantidadEnLetra = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & CantidadEnLetra

End Select

lnNumeroBloques = lnNumeroBloques + 1

Loop Until lyCantidad = 0

CantidadEnLetra = "(" & CantidadEnLetra & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N. )"

End Function

 


Citar  |  
Ver mensaje      

Escrito por Profesor el 09/01/2007

Agradecido por la solución.

Dios te bendiga


Citar  |  
Ver mensaje     

Escrito por Francisco el 18/01/2007
Se puede hacer la misma formula pero que no emita las centecimas ni el /nm o mn al final

Citar  |  
Ver mensaje     

Escrito por Pablo el 22/01/2007
Gracias em ayudo muchisimo tu formula dios te Bendiga hermano.

Citar  |  
Ver mensaje     

Eduardo Morales
Guanajuato, México
Escrito por Eduardo Morales el 19/06/2007
Muchas gracias por tu generosidad!

Citar  |  
Ver mensaje     

Cesar Robles
Distrito Federal, Mé...
Escrito por Cesar Robles el 30/10/2007

Acabo de probar tu macro y funciona excelente. Enhorabuena por este gesto.

Saludos.


Citar  |  
Ver mensaje     

Escrito por Profesor el 31/10/2007

Me alegro profundamente que te haya servido.

Saludos


Citar  |  
Ver mensaje     

Araly
Nuevo León, México
Escrito por Araly el 24/04/2008

Hola!

Oye he tratado muchas veces de hacerla la copio, y cuando escribo la formula me aparece

# ¿NOMBRE?

Me puedes aydar en que me estoy equivocando

La formula la escribo =CANTIDADENLETRAS(H41)

Te agradeceria que me pudieras ayudar.

Muchas Gracias.


Citar  |  
Ver mensaje     

Escrito por Andres Real Alvarez el 24/04/2008

PARA EMPEZAR NECESITAS EL SIGUIENTE CODIGO
LO COPIAS Y PRESIONAS ALT + F11 SE ABRE LA VENTANA DE VISUAL BASIC Y CREAS UN MODULO
LO PEGAS EN EL MODULO ,CIERRAS EL MODULO

Function CantidadEnLetra(tyCantidad As Currency) As String

Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero

tyCantidad = Round(tyCantidad, 2)

lyCantidad = Int(tyCantidad)

lyCentavos = (tyCantidad - lyCantidad) * 100

laUnidades = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")

laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")

laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

lnNumeroBloques = 1

Do

lnPrimerDigito = 0

lnSegundoDigito = 0

lnTercerDigito = 0

lcBloque = ""

lnBloqueCero = 0

For i = 1 To 3

lnDigito = lyCantidad Mod 10

If lnDigito <> 0 Then

Select Case i

Case 1

lcBloque = " " & laUnidades(lnDigito - 1)

lnPrimerDigito = lnDigito

Case 2

If lnDigito <= 2 Then

lcBloque = " " & laUnidades(lnDigito * 10) + lnPrimerDigito - 1)

Else

lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque

End If

lnSegundoDigito = lnDigito

Case 3

lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque

lnTercerDigito = lnDigito

End Select

Else

lnBloqueCero = lnBloqueCero + 1

End If

lyCantidad = Int(lyCantidad / 10)

If lyCantidad = 0 Then

Exit For

End If

Next i

Select Case lnNumeroBloques

Case 1

CantidadEnLetra = lcBloque

Case 2

CantidadEnLetra = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & CantidadEnLetra

Case 3

CantidadEnLetra = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & CantidadEnLetra

End Select

lnNumeroBloques = lnNumeroBloques + 1

Loop Until lyCantidad = 0

CantidadEnLetra = "(" & CantidadEnLetra & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N. )"

End Function

 




Citar  |  
Ver mensaje     

Escrito por Francisco Ballesteros Atondo el 8 de Agosto

Te felicito, en verdad, es un aporte a la comunidad.

Este codigo de conversion de numeros a letras, es muy util a cualquie persona que maneje valores, o documentos de valor que hay que proteger con letras.

nuevamente felicidades.


c.p.c. Francisco ballesteros atondo


Citar  |  
Ver mensaje     

Alejandro
Bogotá, Colombia
Escrito por Alejandro el 14 de Octubre

Excelente la formula, gracias por el aporte.


Citar  |  
Ver mensaje     

Ivonne Perez Zamudio
Michoacán, México
Escrito por Ivonne Perez Zamudio ayer a las 21:02

Hola mi nombre es ivonne soy de michoacan méxico muchas gracias la verdad me servira de mucho unicamente q me le tuve q cambiar algo pues me marcaba error en esta parte

Case 2

If lnDigito <= 2 Then

lcBloque = " " & laUnidades(lnDigito * 10) + lnPrimerDigito - 1)

Else

lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque

End If

lnSegundoDigito = lnDigito

y lo que hice fue porner la apertura de paretesis

Case 2

If lnDigito <= 2 Then

lcBloque = " " & laUnidades(lnDigito * 10) +( lnPrimerDigito - 1)

Else

lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque

End If

lnSegundoDigito = lnDigito


eso me ayudo ahora no se si me podrias ayudar en otra cosa, pongo una formula por ejmplo de suma de dos celdas y si la hace pero al cambiar los datos de las celdas no me cambia el total de la suma me deja el total de los datos anteriores me podrias ayudar te lo agradecere mucho


atte


ivonne pz


Citar  |  
Ver mensaje     

Armando Montes
Chihuahua, México
Escrito por Armando Montes ayer a las 23:33

Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: router inalambrico linksys competencia linguistica y comunicativa 0x800cccod ciprovit calcico nodulo en la garganta

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos