Está en la página 1de 3

Function numero_letras(cantidad)

Dim nn(900), digito(6), caracter(6)


nn(1) = "UNO"
nn(2) = "DOS"
nn(3) = "TRES"
nn(4) = "CUATRO"
nn(5) = "CINCO"
nn(6) = "SEIS"
nn(7) = "SIETE"
nn(8) = "OCHO"
nn(9) = "NUEVE"
nn(10) = "DIEZ"
nn(11) = "ONCE"
nn(12) = "DOCE"
nn(13) = "TRECE"
nn(14) = "CATORCE"
nn(15) = "QUINCE"
nn(16) = "DIECISEIS"
nn(17) = "DIECISIETE"
nn(18) = "DIECIOCHO"
nn(19) = "DIECINUEVE"
nn(20) = "VEINTE"
nn(21) = "VEINTINUNO"
nn(22) = "VEINTIDOS"
nn(23) = "VEINTITRES"
nn(24) = "VEINTICUATRO"
nn(25) = "VEINTICINCO"
nn(26) = "VEINTISEIS"
nn(27) = "VEINTISIETE"
nn(28) = "VEINTIOCHO"
nn(29) = "VEINTINUEVE"
nn(30) = "TREINTA"
nn(40) = "CUARENTA"
nn(50) = "CINCUENTA"
nn(60) = "SESENTA"
nn(70) = "SETENTA"
nn(80) = "OCHENTA"
nn(90) = "NOVENTA"
nn(100) = "CIEN"
nn(200) = "DOSCIENTOS"
nn(300) = "TRESCIENTOS"
nn(400) = "CUATROCIENTOS"
nn(500) = "QUINIENTOS"
nn(600) = "SEISCIENTOS"
nn(700) = "SETENCIENTOS"
nn(800) = "OCHOCIENTOS"
nn(900) = "NOVECIENTOS"
numero = Int(cantidad)
decim = Int((Format(cantidad - numero, "0.00")) * 100)
numero1 = Mid(Right("000000" + Trim(Str(numero)), 6), 4, 3)
numero2 = Mid(Right("000000" + Trim(Str(numero)), 6), 1, 3)
unidad_num = Val(Mid(numero1, 3, 1))
decena_num = Val(Mid(numero1, 2, 1)) * 10
If unidad_num + decena_num <= 30 Then decena_num = unidad_num + decena_num: unidad_num = 0
centena_num = Val(Mid(numero1, 1, 1)) * 100
unidad_txt = nn(unidad_num):
If unidad_num > 0 Then unidad_txt = unidad_txt + " "
decena_txt = nn(decena_num):
If decena_num + unidad_num > 30 And unidad_num > 0 Then decena_txt = decena_txt + " Y"
If decena_num > 0 Then decena_txt = decena_txt + " "
centena_txt = nn(centena_num)
If centena_num + decena_num + unidad_num > 100 And centena_num + decena_num + unidad_num <
200 Then centena_txt = centena_txt + "TO"
If centena_num > 0 Then centena_txt = centena_txt + " "
Munidad_num = Val(Mid(numero2, 3, 1))
Mdecena_num = Val(Mid(numero2, 2, 1)) * 10
If Munidad_num + Mdecena_num <= 30 Then Mdecena_num = Munidad_num + Mdecena_num:
Munidad_num = 0
Mcentena_num = Val(Mid(numero2, 1, 1)) * 100
Munidad_txt = nn(Munidad_num)
If Right(Munidad_txt, 3) = "UNO" Then Munidad_txt = Left(Munidad_txt, Len(Munidad_txt) - 1)
If Munidad_num > 0 Then Munidad_txt = Munidad_txt + " "
Mdecena_txt = nn(Mdecena_num)
If Right(Mdecena_txt, 3) = "UNO" Then Mdecena_txt = Left(Mdecena_txt, Len(Mdecena_txt) - 1)
If Mdecena_num + Munidad_num > 30 And Munidad_num > 0 Then Mdecena_txt = Mdecena_txt + " Y"
If Mdecena_num > 0 Then Mdecena_txt = Mdecena_txt + " "
Mcentena_txt = nn(Mcentena_num)
If Mcentena_num + Mdecena_num + Munidad_num > 100 And Mcentena_num + Mdecena_num +
Munidad_num < 200 Then Mcentena_txt = Mcentena_txt + "TO"
If Mcentena_num > 0 Then Mcentena_txt = Mcentena_txt + " "
numero1_txt = centena_txt + decena_txt + unidad_txt
If Val(numero1) = 0 Then numero1_txt = ""
If Val(numero2) > 0 Then numero2_txt = Mcentena_txt + Mdecena_txt + Munidad_txt + "MIL "
numero3 = "CON " + Right("00" + Trim(Str(decim)), 2) + "/100 NUEVOS SOLES"
numero_letras = numero2_txt + numero1_txt + numero3
If cantidad > 999999 Or cantidad < 1 Then numero_letras = "ERROR: Rango 1 a 999999"
End Function

Otra
Function Soles(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("UNO", "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
Soles = lcBloque
Case 2
Soles = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL") & Soles
Case 3
Soles = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And
lnTercerDigito = 0, " MILLON", " MILLONES") & Soles
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
Soles = Soles & " CON " & Format(Str(lyCentavos), "00") & "/100 NUEVOS
SOLES"
End Function

También podría gustarte