Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
funciones en excel
Enviado por jaime el día 5 de noviembre de 2002
necesito ayuda con la funcion de excel, lo que quiero saber es como hacer para calcular el total de una factura pero que ese total me lo muestre muestre pero en letras, espero puedan ayudarme, muchas gracias
Enviado por Javier Caldera el día 5 de febrero de 2004
Necesito saber todas las formas posible para trabajar con la funcion logica SI, todo acerca de ella como trabaja de todas las posible condiciones y Ejemplo, te lo agradeceria muchisimo, muchas gracias por tu atencion.
Sldes.
Tengo una hoja de excel con dos mil registros, en una de las columas trae una clave por ejemplo 1,2,3 estas claves van del 1 al 150 y quiera asignarles valores de =1 entonces "plumas" =2 "lapiz" alguien me podria ayudar como hacerle con laguna funcion o macro, para no tener que hacerlo con los filtros, de antemano se los agradeceria mucho
Enviado por Veronica Zenil el día 20 de marzo de 2005
cuando estoy relizando funciones de buscar o si ...incluyo el nombre de el archivo donde voy a realizar la busqueda o la formula que estoy realizando esta serie de formulas las realizo en varias hojas que estan contenidas en un archivo y por cada hoja tengo que entrar a cambier el nombre del archivo mi pregunta es puedo en una celda escribir el nombre del archivo con el que trabajaran todas mu}is formulas o incluso escribir parte de el mismo nombre, por ejemplo aho referencia a una serie de hojas que empiezan con el numero de mi proyecto (314,315,316,etc y los siguientes cuatro caracteres corresponden al mes y año del que utilizare mi informacion ejem.: 3160105.xls la parte que yo nesecito escribir en una ceda seria "0105" ya que para el siguiente mes o año este cambia por "3160205" y tengo que modificar el nombre por cada uno de mi proceso si consideramos que tengo 50 ptroyectos por doce hojas de un archivo por un archivo cada catorce dias o cada seman por cada 20 referencias diferentes, se podran dar cuenta que me la paso cambiando los nombres de archivo aun cuando mi formula sea muy practica para mi, si parte de el nombre lo pudiera tomar de una celda seria mas eficiente mi trabajo, me podrian ayudar
NO SE SI HAYAS RESUELTO TU PROBLEMA, DE NO SER ASÍ ENVIAME UN E-MAIL.
YO REALICE UNA FACTURA EN EXCEL E INDICA CON LETRA EL TOTAL (INCLUYENDO CENTAVOS). EN EXCEL NO EXISTE FINCION ALGUNA QUE TE REALICE ESTA TAREA, DEBES DE REALIZAR CALCULOS INDEPENDIENTES CON FINCIONES INDEPENDIENTES (ENTERO, FOTANTE,SUMATORIA, LOGICAS, ETC). SI GUSTAS TE PUEDO ENVIAR UNA COPIA DEL ARCHIVO QUE HICE. Y SI SABES ALGO DE PROGRAMACIÓN SEGURO LE ENTENDERAS, SINO ESTE PROGRAMA FUNCIONA BASANDOSE EN UNA CELDA (LA QUE CONTIENE EL TOTAL)...
disculpa la molestia, pero tambien tengo el mismo problema para covertir las cantidades en numeros a cantidades en texto con el programa de excel, navegando en internet, me encontre esta pagina, serias amable de proporcionarme una copia de las instruciones y los pasos para llevar a cabo esta funcion.
Enviado por Electric2005 el día 2 de noviembre de 2004
Copia esta rutina en un libro nuevo de excel--- herramientas---Macros ---- editar visual Basic--- pones un nombre y pegas todo la rutina abajo descrita.
Function ConvierteNumLetra(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Texto = Numero
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, 1)
CadMiles = ConvierteCifra(Miles, 1)
CadCientos = ConvierteCifra(Cientos, 0)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = CadMillones & " MILLON"
Else
Cadena = CadMillones & " MILLONES"
End If
End If
If Trim(CadMiles) > "" Then
Cadena = Cadena & " " & CadMiles & " MIL"
End If
If Trim(CadMiles & CadCientos) = "UN" Then
Cadena = Cadena & "UNO CON " & Decimales & "/100"
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " CON " & Decimales & "/100"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " CON " & Decimales & "/100"
End If
End If
ConvierteNumLetra = Trim(Cadena)
End Function
Function ConvierteCifra(Texto, SW)
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 SW 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
Enviado por Scioville el día 5 de noviembre de 2004
Muchas gracias por el archivo que publicaste, lo copie y lo pegue en mi hoja de exel y funciona de maravilla . solo le cambie los centimos que salian en numeros para que saliera en letras ,
con este archivo hago las facturas y cheques de una forma mas rapida
Muchas gracias por tu, "macro" "programa" "formala" o lo que sea, pero me fue de mucha utilidad, podrias decirme como puedo aprender a hacer unas iguales.
gracias por todo amigo
Gracias por la ayuda. Soy usuario avanzado de Excel pero no llego a programar, accedo al editor de VB, pego el código, pero ahí me quedo, no sé como hacer que funcione..como una macro supongo. Si puedieras ayudarme te lo agradezco
Enviado por Estoy necesitando tu función.. el día 29 de enero de 2005
hola, estoy necesitando urgente, con fines didácticos, la función que has hecho para convertir una cantidad en letras en castellano. Serías tan amable de enviarme?
Enviado por graciela monica el día 23 de marzo de 2005
soy otra usuaria, y no se como hacer la funcion, me podes enviar el adjunto para solucionar un problema que tengo???
además por favor indicame, si es con una macro o la llamo desde una celda como una función más
Que tal ernest, disculpa que te moleste te agradeceria mucho que me ayudaras con enviarme el codigo fuente o el archivo de la funcion Numeros a Letras, como molesta estar escribiendo a cada rato el total en letras y eso me quita mucho tiempo, te encargo que me ayudes, GRACIAS POR TU COMPRENSION
hola que tal? yo quisiera que me envies lo de tu proyecto con excel, si aun puedes... te agradeceria mucho...
lo que necesito hacer es desde un formulario en fox poder enviar datos a una planilla excel, y a traves de estos parametros de entrada excel tiene que hacer unos graficos.
Enviado por Rafael Moreno el día 18 de noviembre de 2005
Buenas tardes mi estimado, yo tambien tengo ese problema en convertir numeros a letras, podrias ayudarme, digo si se puede me envies una copia de tu archivo, te lo agradecere mucho
NO SE SI HAYAS RESUELTO TU PROBLEMA, DE NO SER ASÍ ENVIAME UN E-MAIL.
YO REALICE UNA FACTURA EN EXCEL E INDICA CON LETRA EL TOTAL (INCLUYENDO CENTAVOS). EN EXCEL NO EXISTE FINCION ALGUNA QUE TE REALICE ESTA TAREA, DEBES DE REALIZAR CALCULOS INDEPENDIENTES CON FINCIONES INDEPENDIENTES (ENTERO, FOTANTE,SUMATORIA, LOGICAS, ETC). SI GUSTAS TE PUEDO ENVIAR UNA COPIA DEL ARCHIVO QUE HICE. Y SI SABES ALGO DE PROGRAMACIÓN SEGURO LE ENTENDERAS, SINO ESTE PROGRAMA FUNCIONA BASANDOSE EN UNA CELDA (LA QUE CONTIENE EL TOTAL)...
estaba yo tamnbien buscando como convertir Numeros en texto, incluyendo centavos claro esta, y por lo que entenmdo lograste algo interesante, a ver sio me ayudas, enviandome ese archivo para probarlo.
GRACIAS
¿Podrías anviarme una copia de tu archivo también a mí? No sé de programación, por lo que si me indicaras cómo hacer que funcione sería de gran ayuda ( uniden2000@hotmail.com ). Muchas gracias.
Enviado por Pedro Martin Bonilla Hernandez el día 8 de noviembre de 2003
Hola Amigo:
mira yo elabore una funcion que convierte las cantidades de numeros a letras, te envio una copia del archivo que elabore en excel ojala y te sirva unicamente te pido que sigas las siguientes instrucciones para que funcione
1.- copia el archivo que te envio a tu pc en la carpeta que sea de tu preferencia
2.- abre excel y selecciona en el menu herramientas, complementos; te va aparecer una ventana de complementos y unos botones.
3.- selecciona el boton examinar, y busca el archivo que te envie en la carpeta en que lo copiaste, ya que lo encontraste presiona doble click
4.- al hacer lo anterior te debe aparecer otra vez la ventana de complementos y verifica que en esa ventana aparezca "funciones de pedro"; si es asi procede a presionar el boton aceptar.
con estos pasos ya estas en posibilidades de convertir una cantidad en letra a traves de dos formas:
1.- teclear la formula =letra(A1), en este caso es un ejemplo que va a convertir la cantidad en letra de la celda "A1" . tu puedes seleccionar la celda que quieras convertir.
2.- la otra es que presiones el boton de funciones y selecciones la categoria definidas por el usuario y selecciones la funcion "Letra" y te va aparecer la ventana en donde te diga que selecciones la celda a convertir.
Notas:
esta funcion te sirve en cualquier archivo de excel que abras en tu pc y la puedes utilizar las veces que quieras en una sola hoja, lo unico que no se podria hacer es que copies un archivo en donde hayas insertado la funcion, en otra pc porque te marcaria error en la celda donde este la funcion ya que este es un complemento que se carga cada vez que inicias el excel en tu maquina y no se copia en el archivo en donde la utilizas.
otro defecto de mi funcion es que te pone los simbolos que se utilizan en mexico para expresar una cantidad monetaria por ejemplo 2.25 (dos pesos 25/100 M.N.) y su capacidad es hasta 999'999,999.99
ultimo punto, ya te he de haber aburrido....
pero cuando puedas ayudar a alguien hazlo....
Enviado por Gerardo Arellano Jaimes el día 27 de abril de 2006
Hola Bueno te envio esta funcion en excel . igual y te sirve esta funcion la seleccione en internet
Instrucciones
Abre Excel
Abre un nuevo libro de trabajo
Elige el menu de Herramientas
Luego Macro
Luego Editor de visual Basic
Luego Insertar Modulo , Despues Copia el texto de la funcion que te pongo aqui abajo todo lo que esta en negrita
despues pica el icono de exel sobre el editor de visual basic esto te regresara a la hoja de calculo
ponte en cualquier celda y pon un numero por ejemplo en A1=500
ponte al lado de la celda y pon lo siguiente ConvierteNumLetra(Numero) la parte del parentesis enmedio donde dice numero pudes remplazarlo con una celda que tenga el numero quedaria asi ConvierteNumLetra(A1) y el Resultado sera
QUINIENTOS CON 00/100 M.N.
Function ConvierteNumLetra(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Texto = Numero
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, 1)
CadMiles = ConvierteCifra(Miles, 1)
CadCientos = ConvierteCifra(Cientos, 0)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = CadMillones & " MILLON"
Else
Cadena = CadMillones & " MILLONES"
End If
End If
If Trim(CadMiles) > "" Then
Cadena = Cadena & " " & CadMiles & " MIL"
End If
If Trim(CadMiles & CadCientos) = "UN" Then
Cadena = Cadena & "UNO CON " & Decimales & "/100"
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " CON " & Decimales & "/100"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " CON " & Decimales & "/100"
End If
End If
ConvierteNumLetra = Trim(Cadena)
End Function
Function ConvierteCifra(Texto, SW)
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 SW 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
Enviado por raul garcia el día 21 de julio de 2004
desearia me enviaras una copia de tu archivo, pues me interesa mucho, agradesco de antemano la atencion prestada, y te agradesco, por compartir tu sabiduria con los demas
Enviado por Paola de la Vega el día 17 de agosto de 2004
Hola Pedro:
Me interesó muchísimo la función que hiciste para convertir cantidades de números a letras, me podrías enviar el archivo? Me sería de mucha utilidad.
Muchas Gracias
Enviado por CARLOS DIAZ el día 25 de febrero de 2004
con este programa puedes realizar los cambios de numero a letras
'----Desde Aqui Seleccionar
'Macro que permite convertir Numeros a Letras hasta por 999,999,999.99
'Procedimiento para Cargar la Macro
'Seleccionar y Pegar en el Portapapeles Todo Este Codigo(Con Ctrl-C)
'Abrir Libro de Excel Normal
'Elegir Herramientas/Macro/Editor de Visualbasic
'De la Barra de Menús Elegir Insertar Modulo
'Seleccionar el Modulo
'Ctrl+V para pegar todo
'Grabar en Libro de Excel
'y Listo
' Forma de llamada en una celda utilizar lo siguiente
'=conviertenumletra(celda)
Function ConvierteNumLetra(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Texto = Numero
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)
CadMiles = ConvierteCifra(Miles)
CadCientos = ConvierteCifra(Cientos)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = CadMillones & " MILLON"
Else
Cadena = CadMillones & " MILLONES"
End If
End If
If Trim(CadMiles) > "" Then
Cadena = Cadena & " " & CadMiles & " MIL"
End If
' Corregido por error detectado por jesus <ygh@hotmail.com> 30-01-2004
' Ya que fallaba en $1001, 2001, 3001, etc hasta 9,001.
' If Trim(CadCientos) = "UN" Then ' Esto estaba antes
If Trim(CadMiles & CadCientos) = "UN" Then
Cadena = Cadena & "UN PESO " & Decimales & "/100 M.N."
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " DE PESOS " & Decimales & "/100 M.N."
Else
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Decimales & "/100 M.N."
End If
End If
ConvierteNumLetra = Trim(Cadena)
End Function
Function ConvierteCifra(Texto)
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"
txtUnidad = "UN"
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
Muchisimas gracias , por el tip funciona de maravilla te felicito por la sintaxis, espero que todos los del foro te den las gracias , yo por mi parte agradecido por el tip,
No hace falta ejecutar ninguna macro.
Me refiero a si la funcion creada se pude llamar desde una celda sin ejecutar nada?
Si es asi es una coas nueva que aprendo.
No he probado la marco pero me parece muy buena.
Enviado por Antonio Santiago el día 16 de noviembre de 2004
Me puedes enviar la función como quedó finalmente ? yo la tengo en forma original pero falla para mil, después alguien me pasó una corrección y funcinó para mil pero falla para uno, si a ti te funciona para todo, te agradeceré infinítamente me la hagas llegar completa.
Sr. Carlos Diaz te felicito por publicar aqui el programa que transforma números a letras el cual he aplicado a una hoja exel para preparar liquidaciones de contrato de trabajo y funciona de mil maravillas, solo he cambiado en mi archivo el nombre de la moneda en el caso mio es Bolívares por ser la moneda de Venezuela, Te felicito de corazón si funciona 100% mil gracias por esta solucción. sigue cocechando EXITOS...Calduji Maracaibo Venezuela.-
Enviado por Serleon1 el día 4 de noviembre de 2004
¡¡¡¡¡¡¡¡ ALERTA ¡¡¡¡¡¡¡¡¡
SR. DIAZ, MUCHAS GRACIAS POR COMPARTIRNOS SU CONOCIMIENTO.
¡¡¡¡¡¡ PERO CUANDO PONGO LA CANTIDAD DE ((((1000))))), ME RESPONDE (((((UN MILUN PESO 00/100 M.N ))))) EN LUGAR DE UN MIL PESOS.
TAL VEZ PORIA ARREGLAR ESE PEQUEÑO PROBLEMA POR QUE YO NO CUENTO CON LOS CONOCIMIENTOS NECESARIOS.
un saludo y en hhorabuena por la funcion, no se si ya cuenten con una version nueva donde se elimine el error al querer convertir la cantidad de 1000 ya que pone \" un mil un pesos\" gracias
Solo para agradecer a los cabecitas de esta idea, ya que si me hacia mucha falta, y en otros sitios te venden la macro, que sigan cocechando ideas para los pobres que njo tenemos conociemiento en programacion felicidades. y ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ARRIBA MEXICO CABRONES¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
No se si es la mejor manera, pero para poder aplicar la funcion en diferente hojas de calculo, grabé el archivo en formato "Complemento de Excel (.xla)".
Posteriormente configuré en el cuadro de dialogo de Herramientas / Complemento
Enviado por LUIS DANIEL el día 9 de febrero de 2005
hola sabes tambien tengo problemas al realizar cheques en convercion de numeros a letras si tienes el programa ya elaborado con centavos te lo agradecere que me lo envies. solo entre a esta pagina por defau y empece a leer estos mensajes y te toco la milestia de que me hagas este grndisimo favor mencionado muchas gracias te lo agradesco de antemano.
Eso es lo que te hace ya que tienes que meter la funcion en una delda hacuiendo referencia a otra celda que es donde está el numero en formato numero.
Pregunto, alguien ha conseguido poner ya los decimales en decimelas plausibles:
pej:
20,15 que ponga veinte con quince o veinte euros , quince centimos en vez de veinte 15/100. yo estoy en ello pero si alguien lo tiene hecho para saberlo.
he modificado la macro actual para que aparezca en euros y con los decimales también en letras.
Seguir las instrucciones que ya teníamos.
Envío el código:
'Macro que permite convertir Numeros a Letras hasta por 999,999,999.99
'Procedimiento para Cargar la Macro
'Seleccionar y Pegar en el Portapapeles Todo Este Codigo(Con Ctrl-C)
'Abrir Libro de Excel Normal
'Elegir Herramientas/Macro/Editor de Visualbasic
'De la Barra de Menús Elegir Insertar Modulo
'Seleccionar el Modulo
'Ctrl+V para pegar todo
'Grabar en Libro de Excel y listo
'Forma de llamada en una celda utilizar lo siguiente
'=conviertenumletra(celda)
Function ConvierteNumLetra(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Dim caddecimales
Texto = Numero
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)
CadMiles = ConvierteCifra(Miles)
CadCientos = ConvierteCifra(Cientos)
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 Decimales = "00" Then
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UN EURO "
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
Else
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
End If
ConvierteNumLetra = Trim(Cadena)
End If
Else
If Trim(CadMillones & CadMiles & CadCientos & caddecimales) = "UN" Then
Cadena = Cadena & "UN EURO " & "Y " & Trim(caddecimales) & "CÉNTIMOS"
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS " & "Y " & Trim(caddecimales) & " CÉNTIMOS"
Else
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS " & "Y " & Trim(caddecimales) & " CÉNTIMOS"
End If
ConvierteNumLetra = Trim(Cadena)
End If
End If
End Function
Function ConvierteCifra(Texto)
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"
txtUnidad = "UN"
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 "1"
txtDecenadecimal = "DIEZ"
Select Case Unidaddecimal
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 = "UN"
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
Estuve haciendo algo igual pero sin poner una tercera funcion para decimales, aprovechando la misma de convertircifra lo malo que me da el problema para 1001 etc.
He visto la tuya y veo que funciona a las mil maravillas salvo el 1 que no lo pone :-(
Aquí os dejo la función modificada en dos. Una para que convierta en castellano y otra para hacerlo en catalán con los errores detectados ya arreglados (Lo de un centimo, en lugar de centimos, 1001 etc.)
'Macro que permite convertir Numeros a Letras hasta por 999,999,999.99
'Procedimiento para Cargar la Macro
'Seleccionar y Pegar en el Portapapeles Todo Este Codigo(Con Ctrl-C)
'Abrir Libro de Excel Normal
'Elegir Herramientas/Macro/Editor de Visualbasic
'De la Barra de Menús Elegir Insertar Modulo
'Seleccionar el Modulo
'Ctrl+V para pegar todo
'Grabar en Libro de Excel y listo
'Forma de llamada en una celda utilizar lo siguiente
'=conviertenumletra(celda)
Function Conviertenumletra(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Dim caddecimales
Texto = Numero
Texto = FormatNumber(Texto, 2)
Texto = Right(Space(14) & Texto, 14)
If Int(Numero) > 999999999 Then
Conviertenumletra = "No se puede convertir este número, solo se soporta el siguiente formato: 999.999.999,99"
Exit Function
End If
Millones = Mid(Texto, 1, 3)
Miles = Mid(Texto, 5, 3)
Cientos = Mid(Texto, 9, 3)
Decimales = Mid(Texto, 13, 2)
CadMillones = conviertecifra(Millones)
CadMiles = conviertecifra(Miles)
CadCientos = conviertecifra(Cientos)
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 "
Else
Cadena = Cadena & " " & CadMiles & " MIL "
End If
End If
If Decimales = "00" Then
If Millones <> 0 And Miles = 0 And Cientos = 0 Then
Cadena = Cadena & " DE EUROS"
Else
If Int(Numero) > 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
Else
If Int(Numero) = 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EURO "
End If
End If
End If
Else
If Millones <> 0 And Miles = 0 And Cientos = 0 Then
Cadena = Cadena & " DE EUROS"
Else
If Int(Numero) > 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
Else
If Int(Numero) = 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EURO "
End If
End If
End If
If Int(Decimales) > 1 And Int(Numero) <> 0 Then
Cadena = Cadena & " Y " & Trim(caddecimales) & " CÉNTIMOS"
Else
If Int(Decimales) > 1 And Int(Numero) = 0 Then
Cadena = Cadena & Trim(caddecimales) & " CÉNTIMOS"
Else
If Int(Decimales) = 1 And Int(Numero) <> 0 Then
Cadena = Cadena & " Y UN CÉNTIMO"
End If
If Int(Decimales) = 1 And Int(Numero) = 0 Then
Cadena = Cadena & "UN CÉNTIMO"
End If
End If
End If
End If
Conviertenumletra = Trim(Cadena)
End Function
Function conviertecifra(Texto)
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"
txtUnidad = "UN"
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 "1"
txtDecenadecimal = "DIEZ"
Select Case Unidaddecimal
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 = "UN"
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
'Macro que permite convertir Numeros a Letras hasta por 999,999,999.99
'Procedimiento para Cargar la Macro
'Seleccionar y Pegar en el Portapapeles Todo Este Codigo(Con Ctrl-C)
'Abrir Libro de Excel Normal
'Elegir Herramientas/Macro/Editor de Visualbasic
'De la Barra de Menús Elegir Insertar Modulo
'Seleccionar el Modulo
'Ctrl+V para pegar todo
'Grabar en Libro de Excel y listo
'Forma de llamada en una celda utilizar lo siguiente
'=conviertenumletracat(celda)
'Version en Catalan
Function Conviertenumletracat(Numero)
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
Dim caddecimales
Texto = Numero
Texto = FormatNumber(Texto, 2)
Texto = Right(Space(14) & Texto, 14)
If Int(Numero) > 999999999 Then
Conviertenumletracat = "No es pot convertir aquest número, només admet el següent format: 999.999.999,99"
Exit Function
End If
Millones = Mid(Texto, 1, 3)
Miles = Mid(Texto, 5, 3)
Cientos = Mid(Texto, 9, 3)
Decimales = Mid(Texto, 13, 2)
CadMillones = conviertecifracat(Millones)
CadMiles = conviertecifracat(Miles)
CadCientos = conviertecifracat(Cientos)
caddecimales = conviertedecimalcat(Decimales)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = CadMillones & " MILIÓ "
Else
Cadena = CadMillones & " MILIONS "
End If
End If
If Trim(CadMiles) > "" Then
If Trim(CadMiles) = "UN" Then
CadMiles = ""
Cadena = Cadena & "" & CadMiles & " MIL "
Else
Cadena = Cadena & " " & CadMiles & " MIL "
End If
End If
If Decimales = "00" Then
If Millones <> 0 And Miles = 0 And Cientos = 0 Then
Cadena = Cadena & " D'EUROS"
Else
If Int(Numero) > 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
Else
If Int(Numero) = 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EURO "
End If
End If
End If
Else
If Millones <> 0 And Miles = 0 And Cientos = 0 Then
Cadena = Cadena & " D'EUROS"
Else
If Int(Numero) > 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EUROS "
Else
If Int(Numero) = 1 Then
Cadena = Cadena & " " & Trim(CadCientos) & " EURO "
End If
End If
End If
If Int(Decimales) > 1 And Int(Numero) <> 0 Then
Cadena = Cadena & " I " & Trim(caddecimales) & " CÈNTIMS"
Else
If Int(Decimales) > 1 And Int(Numero) = 0 Then
Cadena = Cadena & Trim(caddecimales) & " CÈNTIMS"
Else
If Int(Decimales) = 1 And Int(Numero) <> 0 Then
Cadena = Cadena & " I UN CÈNTIM"
End If
If Int(Decimales) = 1 And Int(Numero) = 0 Then
Cadena = Cadena & "UN CÈNTIM"
End If
End If
End If
End If
Conviertenumletracat = Trim(Cadena)
End Function
Function conviertecifracat(Texto)
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 = "CENT"
If Decena & Unidad <> "00" Then
txtCentena = "CENT"
End If
Case "2"
txtCentena = "DOS-CENTS"
Case "3"
txtCentena = "TRES-CENTS"
Case "4"
txtCentena = "QUATRE-CENTS"
Case "5"
txtCentena = "CINC-CENTS"
Case "6"
txtCentena = "SIS-CENTS"
Case "7"
txtCentena = "SET-CENTS"
Case "8"
txtCentena = "VUIT-CENTS"
Case "9"
txtCentena = "NOU-CENTS"
End Select
Select Case Decena
Case "1"
txtDecena = "DEU"
Select Case Unidad
Case "1"
txtDecena = "ONZE"
Case "2"
txtDecena = "DOTZE"
Case "3"
txtDecena = "TRETZE"
Case "4"
txtDecena = "CATORZE"
Case "5"
txtDecena = "QUINZE"
Case "6"
txtDecena = "SETZE"
Case "7"
txtDecena = "DISSET"
Case "8"
txtDecena = "DIVUIT"
Case "9"
txtDecena = "DINOU"
End Select
Case "2"
txtDecena = "VINT"
If Unidad <> "0" Then
txtDecena = "VINT-I-"
End If
Case "3"
txtDecena = "TRENTA"
If Unidad <> "0" Then
txtDecena = "TRENTA-"
End If
Case "4"
txtDecena = "QUARANTA"
If Unidad <> "0" Then
txtDecena = "QUARANTA-"
End If
Case "5"
txtDecena = "CINQUANTA"
If Unidad <> "0" Then
txtDecena = "CINQUANTA-"
End If
Case "6"
txtDecena = "SEIXANTA"
If Unidad <> "0" Then
txtDecena = "SEIXANTA-"
End If
Case "7"
txtDecena = "SETANTA"
If Unidad <> "0" Then
txtDecena = "SETANTA-"
End If
Case "8"
txtDecena = "VUITANTA"
If Unidad <> "0" Then
txtDecena = "VUITANTA-"
End If
Case "9"
txtDecena = "NORANTA"
If Unidad <> "0" Then
txtDecena = "NORANTA-"
End If
End Select
If Decena <> "1" Then
Select Case Unidad
Case "1"
txtUnidad = "UN"
Case "2"
txtUnidad = "DOS"
Case "3"
txtUnidad = "TRES"
Case "4"
txtUnidad = "QUATRE"
Case "5"
txtUnidad = "CINC"
Case "6"
txtUnidad = "SIS"
Case "7"
txtUnidad = "SET"
Case "8"
txtUnidad = "VUIT"
Case "9"
txtUnidad = "NOU"
End Select
End If
conviertecifracat = txtCentena & " " & txtDecena & txtUnidad
End Function
Function conviertedecimalcat(Texto)
Dim Decenadecimal
Dim Unidaddecimal
Dim txtDecenadecimal
Dim txtUnidaddecimal
Decenadecimal = Mid(Texto, 1, 1)
Unidaddecimal = Mid(Texto, 2, 1)
Select Case Decenadecimal
Case "1"
txtDecenadecimal = "DEU"
Select Case Unidaddecimal
Case "1"
txtDecenadecimal = "ONZE"
Case "2"
txtDecenadecimal = "DOTZE"
Case "3"
txtDecenadecimal = "TRETZE"
Case "4"
txtDecenadecimal = "CATORZE"
Case "5"
txtDecenadecimal = "QUINZE"
Case "6"
txtDecenadecimal = "SETZE"
Case "7"
txtDecenadecimal = "DISSET"
Case "8"
txtDecenadecimal = "DIVUIT"
Case "9"
txtDecenadecimal = "DINOU"
End Select
Case "2"
txtDecenadecimal = "VINT"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "VINT-I-"
End If
Case "3"
txtDecenadecimal = "TRENTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "TRENTA-"
End If
Case "4"
txtDecenadecimal = "QUARANTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "QUARANTA-"
End If
Case "5"
txtDecenadecimal = "CINQUANTA-"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "CINQUANTA-"
End If
Case "6"
txtDecenadecimal = "SEIXANTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "SEIXANTA-"
End If
Case "7"
txtDecenadecimal = "SETANTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "SETANTA-"
End If
Case "8"
txtDecenadecimal = "VUITANTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "VUITANTA-"
End If
Case "9"
txtDecenadecimal = "NORANTA"
If Unidaddecimal <> "0" Then
txtDecenadecimal = "NORANTA-"
End If
End Select
If Decenadecimal <> "1" Then
Select Case Unidaddecimal
Case "1"
txtUnidaddecimal = "UN"
Case "2"
txtUnidaddecimal = "DOS"
Case "3"
txtUnidaddecimal = "TRES"
Case "4"
txtUnidaddecimal = "QUATRE"
Case "5"
txtUnidaddecimal = "CINC"
Case "6"
txtUnidaddecimal = "SIS"
Case "7"
txtUnidaddecimal = "SET"
Case "8"
txtUnidaddecimal = "VUIT"
Case "9"
txtUnidaddecimal = "NOU"
End Select
End If
If Decenadecimal = 0 And Unidaddecimal = 0 Then
conviertedecimalcat = ""
Else
conviertedecimalcat = txtDecenadecimal & txtUnidaddecimal
End If
End Function
Enviado por edgarlc el día 30 de noviembre de 2004
Hola, seguia estando mal la funcion para cifras como 1,000.00, ademas de que en cifras como 1,001.00 decir MIL UN PESO y es MIL UN PESOS, el problema solo es en la funcion principal.
Public Function ConvierteNumLetra(Numero) As String
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadMillones
Dim CadMiles
Dim CadCientos
If Len(Numero) > 14 Then
ConvierteNumLetra = "No se puede convertir este número solo se soporta el siguiente formato: 999,999,999.99"
Exit Function
End If
Texto = Numero
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)
CadMiles = ConvierteCifra(Miles)
CadCientos = ConvierteCifra(Cientos)
If Trim(CadMillones) > "" Then
If Trim(CadMillones) = "UN" Then
Cadena = CadMillones & " MILLON"
Else
Cadena = CadMillones & " MILLONES"
End If
End If
If Trim(CadMiles) > "" Then
Cadena = Cadena & " " & CadMiles & " MIL"
End If
If Trim(CadMiles) = "UN" And Trim(CadCientos) = "UN" Then
Cadena = Cadena & " UN PESOS " & Decimales & "/100 M.N."
Else
If Miles & Cientos = "000000" Then
Cadena = Cadena & " " & Trim(CadCientos) & " DE PESOS " & Decimales & "/100 M.N."
Else
If Trim(CadMiles) = "" And Trim(CadCientos) = "UN" Then
Cadena = Cadena & " " & Trim(CadCientos) & " PESO " & Decimales & "/100 M.N."
Else
Cadena = Cadena & " " & Trim(CadCientos) & " PESOS " & Decimales & "/100 M.N."
End If
End If
End If
Enviado por Luisinho el día 5 de diciembre de 2004
Felicidades por el macro, esta excelente.
solo una pregunta ¿como lo ejecuto desde cualquier hoja de Excel?, espero se entienda mi pregunta, como llamar la funcion desde cualquier libro sin necesidad de volver a declararla. espero que se pueda, ya que es de gran ayuda. Muchas Gracias!!