Código de Visual Basic - Conversión de montos en letras

Conversión de montos en letrasgráfica de visualizaciones


Visual Basic

estrellaestrellaestrellaestrellaestrella(13)
Publicado el 05 de Septiembre del 2002 por Roberto
20.323 visualizaciones desde el 05 de Septiembre del 2002. Una media de 28 por semana
Esta es una función que convierte montos en letras, esta hecha en Visual Basic para aplicaciones y puede ser usada en las macros de Excel, Word, Outlook, etc. Funciona bien para cantidades entre 1.00 y 999,999,999.99, incluye los centavos y las leyendas características de los montos en México.

Versión 1
estrellaestrellaestrellaestrellaestrella(13)

Publicado el 05 de Septiembre del 2002gráfica de visualizaciones de la versión: Versión 1
20.324 visualizaciones desde el 05 de Septiembre del 2002. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Function CantidadEnLetra(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
    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", "DIESISEIS", "DIESISIETE", "DIESIOCHO", "DIESINUEVE", "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
            CantidadEnLetra = lcBloque
        Case 2
            CantidadEnLetra = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & CantidadEnLetra
        Case 3
            CantidadEnLetra = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " MILLON", " MILLONES") & CantidadEnLetra
        End Select
        lnNumeroBloques = lnNumeroBloques + 1
    Loop Until lyCantidad = 0
    CantidadEnLetra = "(" & CantidadEnLetra & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N. )"
End Function



Comentarios sobre la versión: Versión 1 (13)

Nicolás Fco. Thompson
06 de Septiembre del 2002
estrellaestrellaestrellaestrellaestrella
El codigo esta muy bien, pero no entiendo la forma de como aplicarlo en Visual Basic. Favor de ayudarmen
Responder
Carlos
20 de Septiembre del 2002
estrellaestrellaestrellaestrellaestrella
El codigo esta muy bien, pero no entiendo la forma de como aplicarlo en Macros de Excel, y en Visual Basic. Favor de ayudarme
Responder
Pepe Mendez
21 de Septiembre del 2002
estrellaestrellaestrellaestrellaestrella
Bueno todo funciona bien, pero agregando un modulo por separado estoy tratando de adaptar a mi moneda.
Responder
Pablo Amezcua
24 de Septiembre del 2002
estrellaestrellaestrellaestrellaestrella
Hola!

Primero que nada quiero agradecer a Roberto por el excelente codigo, y quiero darle las gracias por su excelente respuesta a mi pregunta de como utilizarlo en Visual y no lo creera pero me decia que el sinceramente no sabia como utilizarlo en Visual pero con el ejemplo que me dio para Excel, he sacado la manera de utilizarlo y es la Siguioente y creo que algunas otras personas tampoco sabian:

PARA UTILIZARLO EN VISUAL BASIC:

LETRA.Text = CantidadEnLetra(SUBTOTAL.Text)

LETRA.Text = "CAJA DE TEXTO EN DONDE SE MOSTRARA LA CANTIDAD EN LETRAS"

CantidadEnLetra =" Funcion para convertir a letras los nemeros.

SUBTOTAL.Text="CAJA DE TEXTO, EN DONDE SE TIENE LA CANTIDAD A CONVERTIR.
Responder
Claudio
05 de Octubre del 2002
estrellaestrellaestrellaestrellaestrella
justo lo que necesitaba exelente. Bien pensado
Responder
Eduardo A
08 de Octubre del 2002
estrellaestrellaestrellaestrellaestrella
Excelente programa, a ver si luego lo terminas para los Millones
Responder
Toño
10 de Noviembre del 2005
estrellaestrellaestrellaestrellaestrella
Excelente!!!! muy buen código, me ahorraste algo de estres mental, Gracias!!!
Responder
Alfredo Blanco
26 de Noviembre del 2005
estrellaestrellaestrellaestrellaestrella
Excelente y muy funcional. Gracias!
Responder
gino vara
03 de Agosto del 2006
estrellaestrellaestrellaestrellaestrella
por favor lo pueden subir el programa en visual basic ya que e estado tratando de arreglarlo y no muestra nada saludos
Responder
Luis
13 de Septiembre del 2007
estrellaestrellaestrellaestrellaestrella
este codigo esta super genial se ve que le echaste muchas ganas y esta perfectamente bien echo, eres grande! jajaja gracias!
Responder
freddy
15 de Febrero del 2008
estrellaestrellaestrellaestrellaestrella
Excelente, solo hay que cambiar algunas cantidades en letras, como diecinueve, diecisiete, pero fuera de ello, muy bueno el código.
Responder
Jonathan
24 de Junio del 2010
estrellaestrellaestrellaestrellaestrella
Para visual basic 2008 no funciona
Responder
JoseLuis
16 de Abril del 2011
estrellaestrellaestrellaestrellaestrella
Excelente código facil de implementar y ahorra una gran quebrada de coco felicitaciones claro solo hacer unos cuantos cambiecillos leves y listo, (pero que mas quiere el sapo no, pelon y con diadema) saludos y mil gracias...
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s309