Mr_Alver
Usuario (México)
ESTE MACRO TE SIRVE PARA QUE CUANDO ESCRIBAS UN NUMERO EN UNA CELDA DE EXCEL ESTE TE APAREZCA CON EL FORMATO DE TEXTO. EJEMPLO SI ESCRIBES EN LA CELDA A1 =1458659.56 EL RESULTADO SERA 1,458,659.56 (CON FORMATO DE NUMERO Y SEPARADOR DE LISTAS) ESTE MACRO TE AYUDARA ESCRIBIENDO LO SIGUIENTE =PESOS(1458659.56) Y EL RESULTADO SERA UN MILLON CUATROCIENTOS CINCUENTA Y OCHO MIL SEISCIENTOS CINCUENTA Y NUEVE PESOS 56/100 M.N. EL CUAL SE PUEDE AJUSTAR O JUSTIFICAR CON EL COMANDO DE EDICION O PROPIEDADES DE TEXTO DE MUCHAS FORMAS CODIGO VISUAL BASIC Attribute VB_Name = "Módulo1" Public Unidades(16), Decenas(9), Centenas(10) Sub INICIO() PESOS (9099999.99) End Sub Function PESOS(CANTIDAD) CCANTIDAD = Str(Format(CANTIDAD, "00.00") CCANTI = Str(Fix(CANTIDAD)) CCANTI = Right(CCANTI, Len(CCANTI) - 1) Unidades(0) = "" Unidades(1) = "UN" Unidades(2) = "DOS" Unidades(3) = "TRES" Unidades(4) = "CUATRO" Unidades(5) = "CINCO" Unidades(6) = "SEIS" Unidades(7) = "SIETE" Unidades(8) = "OCHO" Unidades(9) = "NUEVE" Unidades(10) = "DIEZ" Unidades(11) = "ONCE" Unidades(12) = "DOCE" Unidades(13) = "TRECE" Unidades(14) = "CATORCE" Unidades(15) = "QUINCE" Unidades(16) = "DIECI" Decenas(0) = "" Decenas(1) = "VEINTE" Decenas(2) = "TREINTA" Decenas(3) = "CUARENTA" Decenas(4) = "CINCUENTA" Decenas(5) = "SESENTA" Decenas(6) = "SETENTA" Decenas(7) = "OCHENTA" Decenas(8) = "NOVENTA" Decenas(9) = "VEINTI" Centenas(0) = "" Centenas(1) = "CIEN" Centenas(2) = "DOSCIENTOS" Centenas(3) = "TRESCIENTOS" Centenas(4) = "CUATROCIENTOS" Centenas(5) = "QUINIENTOS" Centenas(6) = "SEISCIENTOS" Centenas(7) = "SETECIENTOS" Centenas(8) = "OCHOCIENTOS" Centenas(9) = "NOVECIENTOS" Centenas(10) = "CIENTO" If InStr(CCANTIDAD, "." = 0 Then CDECIMAL = "00/100 M.N." Else If Len(Mid(CCANTIDAD, InStr(CCANTIDAD, "." + 1)) = 1 Then CDECIMAL = Mid(CCANTIDAD, InStr(CCANTIDAD, "." + 1) + "0/100 M.N." Else CDECIMAL = Mid(CCANTIDAD, InStr(CCANTIDAD, "." + 1) + "/100 M.N." End If End If PESOS = LETRAS(CCANTI, 9, PESOS) If Len(PESOS) <> 0 Then If Len(CCANTI) = 7 And Val(Left(CCANTI, 1)) = 1 Then PESOS = PESOS + " MILLÓN" Else PESOS = PESOS + " MILLONES" End If End If CCANTI = Right(CCANTI, 6) PESOS = LETRAS(CCANTI, 6, PESOS) If Len(PESOS) <> 0 Then If Val(Left(CCANTI, 3)) <> 0 Then PESOS = PESOS + " MIL" End If End If CCANTI = Right(CCANTI, 3) PESOS = LETRAS(CCANTI, 3, PESOS) If Len(PESOS) <> 0 Then If Val(Left(CCANTI, 3)) = 1 Then PESOS = PESOS + "PESO" ElseIf Val(Left(CCANTI, 3)) <> 0 Then PESOS = PESOS + " PESOS" Else PESOS = PESOS + " PESOS" End If Else PESOS = "CERO PESOS" End If PESOS = PESOS + " " + CDECIMAL End Function Function LETRAS(CCANTI, NUMBER, PESOS) If Len(CCANTI) = NUMBER Then If Val(Left(CCANTI, 1)) > 1 Or Val(Mid(CCANTI, 2, 2)) = 0 Or Val(Left(CCANTI, 1)) = 0 Then PESOS = PESOS + " " + Centenas(Val(Left(CCANTI, 1))) Else PESOS = PESOS + " " + Centenas(10) End If PESOS = OTRO(CCANTI, PESOS, 2) ElseIf Len(CCANTI) = NUMBER - 1 Then If Len(PESOS) = 0 Then PESOS = OTRO(CCANTI, PESOS, 1) End If ElseIf Len(CCANTI) = NUMBER - 2 Then If Len(PESOS) = 0 Then PESOS = OTROS(CCANTI, PESOS) End If End If LETRAS = PESOS End Function Function OTRO(CCANTI, PESOS, EMPIEZA) If Val(Mid(CCANTI, EMPIEZA, 1)) >= 3 Then If Val(Mid(CCANTI, EMPIEZA + 1, 1)) = 0 Then PESOS = PESOS + " " + Decenas(Val(Mid(CCANTI, EMPIEZA, 1)) - 1) + Unidades(Val(Mid(CCANTI, EMPIEZA + 1, 1))) Else PESOS = PESOS + " " + Decenas(Val(Mid(CCANTI, EMPIEZA, 1)) - 1) + " Y " + Unidades(Val(Mid(CCANTI, EMPIEZA + 1, 1))) End If ElseIf Val(Mid(CCANTI, EMPIEZA, 1)) >= 2 Then If Val(Mid(CCANTI, EMPIEZA + 1, 1)) = 0 Then PESOS = PESOS + " " + Decenas(Val(Mid(CCANTI, EMPIEZA, 1)) - 1) + Unidades(Val(Mid(CCANTI, EMPIEZA + 1, 1))) Else PESOS = PESOS + " " + Decenas(9) + Unidades(Val(Mid(CCANTI, EMPIEZA + 1, 1))) End If ElseIf Val(Mid(CCANTI, EMPIEZA, 2)) >= 16 Then PESOS = PESOS + " " + Unidades(16) + Unidades(Val(Mid(CCANTI, EMPIEZA + 1, 1))) Else PESOS = PESOS + " " + Unidades(Val(Mid(CCANTI, EMPIEZA, 2))) End If OTRO = PESOS End Function Function OTROS(CCANTI, PESOS) If Len(PESOS) = 0 Then PESOS = PESOS + Unidades(Val(Left(CCANTI, 1))) End If OTROS = PESOS End Function COPIA Y PEGA TODO EL CODIGO EN UN BLOC DE NOTAS (VE A INICIO Y LUEGO /EJECUTAR/NOTEPAD) GUARDALO COMO "pesos.bas" AHORA ABRE EXCEL Y EN UNA HOJA NUEVA O EN LA HOJA QUE QUIERAS UTILIZAR EL MACRO SI ES OFFICE 2010 TENDRAS QUE GUARDARLA COMO HABILITADA PARA MACROS *.XLSM 1) EN LA FICHA (PROGRAMADOR) DA CLIC EN (VISUAL BASIC) 2) A CONTINUACION SELECCION (ARCHIVO) Y LUEGO (IMPORTAR ARCHIVO) 3) BUSCA EL ARCHIVO (pesos.bas) EN DONDE LO HAYAS GUARDADO 4) CIERRA VISUAL BASIC EN (ARCHIVO) Y LUEGO EN (CERRAR Y VOLVER A MICROSOFT EXCEL) AHORA EN CUALQUIER PESTAÑA DE TU HOJA DE CALCULO ESCRIBE EL COMANDO EN UNA CELDA =PESOS(1536.36) Y TENDRAS TU NUMERO CONVERTIDO A TEXTO UN MIL QUINIENTOS TREINTA Y SEIS PESOS 36/100 M.N. SI LO GUARDAS EN EXCEL 2007 O POSTERIORES LA EXTENSION SERIA LA DE UN EXCEL NORMAL *.XLS SALUDOS Y ESPERO TE AYUDE