IMPORTE CON NUMERO

04/05/2010 - 19:53 por ISABELLA | Informe spam
AL PONER IMPORTE CON NUMERO SE PONGA AUTOMATICO CON LETRA

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
04/05/2010 - 21:37 | Informe spam
hola, Isabella !

AL PONER IMPORTE CON NUMERO SE PONGA AUTOMATICO CON LETRA



aqui encuentras algunas aternativas SIN macros:
http://www.teladearana.es/todo-info...etras.html

solo necesitas mantener una cierta "relatividad" entre la celda con el numero y la celda con las letras
(y viene explicado en el articulo)

y aqui hay varias opciones con funciones personalizadas (vba)
http://www.teladearana.es/todo-info...etras.html

saludos,
hector.
Respuesta Responder a este mensaje
#2 JANTHER
06/05/2010 - 21:41 | Informe spam
Hola Isabella te dejo este código

Function PesosMN2(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
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As
Variant 'Si esta como Option Explicit
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
PesosMN2 = lcBloque
Case 2
PesosMN2 = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & PesosMN2
Case 3
PesosMN2 = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And
lnTercerDigito = 0, " MILLON", " MILLONES") & PesosMN2
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN2 = "(" & PesosMN2 & IIf(tyCantidad > 1, " PESOS ", " PESO ") &
Format(Str(lyCentavos), "00") & "/100 M.N.)"
End Function


Solo debes tener cuidado con los saltos de linea.

Saludos a

J. Antonio Hernández B.


"ISABELLA" escribió:

AL PONER IMPORTE CON NUMERO SE PONGA AUTOMATICO CON LETRA
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida