0% acharam este documento útil (0 voto)
97 visualizações3 páginas

Converter Números em Letras VBA

Este documento descreve uma função em Visual Basic para converter números em letras. A função recebe um valor monetário como entrada e retorna uma string com o valor escrito por extenso em espanhol, incluindo a parte decimal. A função usa arrays para mapear cada dígito aos nomes de unidades, dezenas e centenas e itera sobre os dígitos para construir a string de saída bloco por bloco.

Enviado por

den
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
97 visualizações3 páginas

Converter Números em Letras VBA

Este documento descreve uma função em Visual Basic para converter números em letras. A função recebe um valor monetário como entrada e retorna uma string com o valor escrito por extenso em espanhol, incluindo a parte decimal. A função usa arrays para mapear cada dígito aos nomes de unidades, dezenas e centenas e itera sobre os dígitos para construir a string de saída bloco por bloco.

Enviado por

den
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

MACRO NÚMEROS A LETRAS

Function NumLetras(Valor As Currency, Optional MonedaSingular As String = "", Optional


MonedaPlural As String = "UNIDAD") As String

Dim Cantidad As Currency, Centavos As Currency, Digito As Byte, PrimerDigito As Byte,


SegundoDigito As Byte, TercerDigito As Byte, Bloque As String, NumeroBloques As Byte,
BloqueCero

Dim Unidades As Variant, Decenas As Variant, Centenas As Variant, I As Variant

Dim ValorEntero As Long

Dim ValorOriginal As Double

Valor = Round(Valor, 2)

Cantidad = Int(Valor)

ValorEntero = Cantidad

Centavos = (Valor - Cantidad) * 100

Unidades = 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")

Decenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA",


"SETENTA", "OCHENTA", "NOVENTA")

Centenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS",


"QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")

NumeroBloques = 1

Do

PrimerDigito = 0

SegundoDigito = 0

TercerDigito = 0

Bloque = ""

BloqueCero = 0

For I = 1 To 3

Digito = Cantidad Mod 10

If Digito <> 0 Then


Select Case I

Case 1

Bloque = " " & Unidades(Digito - 1)

PrimerDigito = Digito

Case 2

If Digito <= 2 Then

Bloque = " " & Unidades((Digito * 10) + PrimerDigito - 1)

Else

Bloque = " " & Decenas(Digito - 1) & IIf(PrimerDigito <> 0, " Y", Null) & Bloque

End If

SegundoDigito = Digito

Case 3

Bloque = " " & IIf(Digito = 1 And PrimerDigito = 0 And SegundoDigito = 0, "CIEN",
Centenas(Digito - 1)) & Bloque

TercerDigito = Digito

End Select

Else

BloqueCero = BloqueCero + 1

End If

Cantidad = Int(Cantidad / 10)

If Cantidad = 0 Then

Exit For

End If

Next I

Select Case NumeroBloques

Case 1

NumLetras = Bloque

Case 2

NumLetras = Bloque & IIf(BloqueCero = 3, Null, " MIL") & NumLetras

Case 3

NumLetras = Bloque & IIf(PrimerDigito = 1 And SegundoDigito = 0 And TercerDigito =


0, " MILLON", " MILLONES") & NumLetras
End Select

NumeroBloques = NumeroBloques + 1

Loop Until Cantidad = 0

If Valor >= 1000000000 Then

Dim millardos As Currency

Dim millarodsInt As Integer

Dim letras_Millardos As String

millarodsInt = Int(Valor / 1000000000)

millardos = millarodsInt

letras_Millardos = Replace(Trim(NumLetras(millardos)), "00/100", IIf(millarodsInt = 1, "MIL


MILLONES", "MIL MILLONES"))

NumLetras = letras_Millardos & NumLetras

End If

NumLetras = Trim(NumLetras) & " CON " & Format(Str(Centavos), "00") & "/100 " &
IIf(ValorEntero = 1, MonedaSingular, MonedaPlural)

End Function

Você também pode gostar