funcion numeros a letras ok

Upload: jose-martin-pastor-garcia

Post on 12-Oct-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

DESCARGADO DE www.vateos.com VISTALA Y ENCUENTRA MUCHOS RECURSOS INFORMTICOS

EL CDIGO COPIALO TODO A PARTIR DE LA LINEA QUE COMIENZA POR FUNCTION, JUSTO DESPUS DE LOS GUIONES

- - - - - - - - - - - - - - - - - - -

FUNCTION CONVIERTENUMLETRA(NUMERO)DIM TEXTODIM MILLONESDIM MILESDIM CIENTOSDIM DECIMALESDIM CADENADIM CADMILLONESDIM CADMILESDIM CADCIENTOSTEXTO = NUMEROTEXTO = 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) > "" THENIF TRIM(CADMILLONES) = "UN" THENCADENA = CADMILLONES & " MILLON"ELSECADENA = CADMILLONES & " MILLONES"END IFEND IFIF TRIM(CADMILES) > "" THENCADENA = CADENA & " " & CADMILES & " MIL"END IF

IF TRIM(CADMILES & CADCIENTOS) = "UN" THENCADENA = CADENA & "UNO PESOS" & DECIMALES & "/100" & " M.N. "ELSEIF MILES & CIENTOS = "000000" THENCADENA = CADENA & " " & TRIM(CADCIENTOS) & " PESOS " & DECIMALES & "/100" & " M.N. "ELSECADENA = CADENA & " " & TRIM(CADCIENTOS) & " PESOS " & DECIMALES & "/100" & " M.N. "END IFEND IFCONVIERTENUMLETRA = TRIM(CADENA)END FUNCTION

FUNCTION CONVIERTECIFRA(TEXTO, SW)DIM CENTENADIM DECENADIM UNIDADDIM TXTCENTENADIM TXTDECENADIM TXTUNIDADCENTENA = MID(TEXTO, 1, 1)DECENA = MID(TEXTO, 2, 1)UNIDAD = MID(TEXTO, 3, 1)SELECT CASE CENTENACASE "1"TXTCENTENA = "CIEN"IF DECENA & UNIDAD "00" THENTXTCENTENA = "CIENTO"END IFCASE "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 DECENACASE "1"TXTDECENA = "DIEZ"SELECT CASE UNIDADCASE "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 SELECTCASE "2"TXTDECENA = "VEINTE"IF UNIDAD "0" THENTXTDECENA = "VEINTI"END IFCASE "3"TXTDECENA = "TREINTA"IF UNIDAD "0" THENTXTDECENA = "TREINTA Y "END IFCASE "4"TXTDECENA = "CUARENTA"IF UNIDAD "0" THENTXTDECENA = "CUARENTA Y "END IFCASE "5"TXTDECENA = "CINCUENTA"IF UNIDAD "0" THENTXTDECENA = "CINCUENTA Y "END IFCASE "6"TXTDECENA = "SESENTA"

IF UNIDAD "0" THENTXTDECENA = "SESENTA Y "END IFCASE "7"TXTDECENA = "SETENTA"IF UNIDAD "0" THENTXTDECENA = "SETENTA Y "END IFCASE "8"TXTDECENA = "OCHENTA"IF UNIDAD "0" THENTXTDECENA = "OCHENTA Y "END IFCASE "9"TXTDECENA = "NOVENTA"IF UNIDAD "0" THENTXTDECENA = "NOVENTA Y "END IFEND SELECT

IF DECENA "1" THENSELECT CASE UNIDADCASE "1"IF SW THENTXTUNIDAD = "UN"ELSETXTUNIDAD = "UNO"END IFCASE "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 SELECTEND IFCONVIERTECIFRA = TXTCENTENA & " " & TXTDECENA & TXTUNIDADEND FUNCTION

FUNCION PARA CONVERTIR NUMERO A LETRAS.Function Unidades(num, UNO) Dim U Dim Cad U = Array("UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE") Cad = "" If num = 1 Then If UNO = 1 Then Cad = Cad & "UNO" Else Cad = Cad & "UN" End If Else Cad = Cad & U(num - 1) End If Unidades = Cad End Function Function Decenas(num1, res) Dim D1 D1 = Array("ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", _ "DIECIOCHO", "DIECINUEVE") D2 = Array("DIEZ", "VEINT", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", _ "SETENTA", "OCHENTA", "NOVENTA") If num1 > 10 And num1 < 20 Then Cad1 = D1(num1 - 10 - 1) Else Cad1 = D2(num1 \ 10) - 1) If (num1 \ 10) 2 Then If res > 0 Then Cad1 = Cad1 & " Y " Cad1 = Cad1 & Unidades(num1 Mod 10, 0) End If Else If res = 0 Then Cad1 = Cad1 & "E" Else Cad1 = Cad1 & "I" Cad1 = Cad1 & Unidades(num1 Mod 10, 0) End If End If End If Decenas = Cad1 End Function Function Cientos(num2) num3 = num2 \ 100 Select Case num3 Case 1 If num2 = 100 Then cad2 = "CIEN " Else cad2 = "CIENTO " End If Case 5 cad2 = "QUINIENTOS " Case 7 cad2 = "SETECIENTOS " Case 9 cad2 = "NOVECIENTOS " Case Else cad2 = Unidades(num3, 0) & "CIENTOS " End Select num2 = num2 Mod 100 If num2 > 0 Then If num2 < 10 Then cad2 = cad2 & Unidades(num2, num2) Else cad2 = cad2 & Decenas(num2, num2 Mod 10) End If End If Cientos = cad2 End Function Function Miles(num4) If (num4 >= 100) Then cad3 = Cientos(num4) Else If (num4 >= 10) Then cad3 = Decenas(num4, num4 Mod 10) Else cad3 = Unidades(num4, 0) End If End If cad3 = cad3 & " MIL " Miles = cad3 End Function Function Millones(cant) If cant = 1 Then ter = " " Else ter = "ES " End If If (cant >= 1000) Then cantl = cantl & Miles(cant \ 1000) cant = cant Mod 1000 End If If cant > 0 Then If cant >= 100 Then cantl = cantl & Cientos(cant) Else If cant >= 10 Then cantl = cantl & Decenas(cant, cant Mod 10) Else cantl = cantl & Unidades(cant, 0) End If End If End If Millones = cantl & " MILLON" & ter End Function Function decimales(numero As Single) As Integer Dim iaux As Integer iaux = numero - Application. Round(numero, 2) decimales = iaux End Function Function letras(cantm As Variant, ByVal mon As Integer) As String Dim cants1 As String, num1 As Variant, num2 As Variant num1 = cantm \ 1000000 num2 = cantm - (num1 * 1000000) cents = (num2 * 100) Mod 100 If cents = 1000000 Then cantlm = Millones(cantm \ 1000000) cantm = cantm Mod 1000000 End If If cantm > 0 Then If (cantm >= 1000) Then cantlm = cantlm & Miles(cantm \ 1000) cantm = cantm Mod 1000 End If End If If cantm > 0 Then If cantm >= 100 Then cantlm = cantlm & Cientos(cantm) Else If cantm >= 10 Then cantlm = cantlm & Decenas(cantm, cantm Mod 10) Else cantlm = cantlm & Unidades(cantm, 1) End If End If End If If mon = 1 Then letras = "(" & cantlm & " PESOS " & cents1 & "/100 M.N. )" Else letras = "(" & cantlm & " DOLARES " & cents1 & "/100 U.S.D. )" End If End Function Sub prueba() Dim res As String, num As Single num = 50899697. 51 res = letras(num, 1) End Sub Al finalizar cierren y solo manden llamar la formula como : =letras(aqui ponen la celda donde viene el numero,1) si es pesos mexicanos y si es dolares llaman: =letras(aqui ponen la celda donde viene el numero,2) Si cambian la denominacion a otras monedas solo modifiquen la macro casi al final donde viene "pesos" a su moneda tambien entre comillas y quiten M.N. ES OTRA FUNCION