El post que buscas se encuentra eliminado, pero este también te puede interesar

Convertir un numero a letra en Access (Tutorial completo)

Anuncios

Convertir un numero a letra en Access (Tutorial completo)
facil

microsoft office

paso a paso

Function PesosMN(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
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL" & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES" & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = "(" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO " & Format(Str(lyCentavos), "00" & "/100 M.N.)"
End Function


tutorial
recibos
Access 2007
Access 2010
converir de numero a letras
funciones de access
Convertir un numero a letra en Access (Tutorial completo)
facil

Anuncios

17 comentarios - Convertir un numero a letra en Access (Tutorial completo)

@tonyco +2
lo agregué a fav y te di 5.., capaz en algun momento me sirve
@Pangolp +1
Excelente!, van +10
@Martincho8498
Espectacular Taringayyo, recomendado.
Che con todo esto que te mandaste una pregunta: quiero creer que te fue bien en algoritmos ¿no?
@abramcho
Excelente, justo lo que buscaba +10 amigo!!!
@mariosinhue
Te felicito, está muy bien, gracias
saludos
@MaiiKECasteLlano
disculpa no me sale me puedes ayudar
@Taringayyo
Decimee donde es que te trabas ? y que version de officce usas ?
@Cazador77
+10 viejito. No te doy más porque no se puede... EXCELENTE APORTE... JUSTO LO QUE BUSCABA.

El cambio que le hice solamente fue que en vez de colocar la función en el ORIGEN DEL CONTROL, mejor lo puse en un evento (después de actualizar), algo así:

Private Sub por_cant_AfterUpdate ( )
Me.Por_letras.Value = PesosMN ( [Por_cant] )
End Sub

En donde Por_letras es el control en donde se guardará la cantidad en letras (un pagaré), y Por_cant es el control en donde está la cantidad en números.

Otra vez, gracias por el aporte.

Bendiciones...
@abrahampadron
me muedes ayudar me sale en rojo en las filas 9, 10 11 12 y lineras 49 51 y 55, me ayudas por favor
@stumbleime
A mi tambien me paso igual, fijate en el codigo y donde aparezca un smile (icono de carita) reemplazalo por un cierre de parentesis ) con eso se arregla el codigo
@lsolrac
+10 porque está muy bien explicado.... esta función es muy útil. yo la uso en Excel
@cpeniche
Muy bien, me funcionó a la primera. Hace unos años hice esta función con puras fórmulas de Excel, habrás de imaginar la maraña que hice, pero funcionaba muy bien. Saludos y muchas gracias.
@george_lobo
Antes que nada gracias por el código, me funcionó muy excepto por 2 situaciones:
1.- Cuando el valor es 0 (cero), el resultado es: (PESO 00/100 M.N.)
Pregunta ¿Cómo se podría modificar para que cuando el valor sea cero escriba:
(0 PESOS 00/100 M.N.)

2.- Cuando el valor del campo es Nulo el resultado es: #Error
Pregunta: ¿Como se puede modificar para que cuando el valor sea nulo, escriba un mensaje como por ejemplo: "Sin pago realizado".

Gracias, ojalá alguien pueda ayudarme.
Mi correo es: george_lobo@yahoo.com

El código es el mismo:

Option Compare Database
Function PesosMN(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
PesosMN = lcBloque
Case 2
PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL" & PesosMN
Case 3
PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES" & PesosMN
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
PesosMN = "(" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO " & Format(Str(lyCentavos), "00" & "/100 M.N.)"
End Function
@george_lobo
Olvidé mencionar que lo estoy aplicarlo en un Informe de Access 2007.
@adavidcifuentes
CHAMO EXCELENTE FORMULA YO LA CONDICIONE AL FINAL PARA QUE ARROJE TEXTO "SIN NUMERO" CUANDO ESTA EL VALOR EN 00
PesosMN = "" & PesosMN & IIf(tyCantidad > 1, " CON ", "SIN NUMER" & Format(Str(lyCentavos), "" & ""
@masterjoma
Gracias hombre me ha sido muy util tu codigo.

Desde colombia saludos.