Función que devuelve el literal de un número entero entre 0 y 100
Ej. 98 -> Noventa y Ocho
Ej. 98 -> Noventa y Ocho
INSTRUCCIONES
1. Cree un nuevo
Libro y Modulo nuevo
2. Transcriba el
siguiente código:
Function aLiteral(ByVal
valor As Double) As String
Dim literal As String
valor = Round(valor, 0)
valor = Abs(valor)
Dim numeros(100) As
String
numeros(0) =
"cero"
numeros(1) =
"uno"
numeros(2) =
"dos"
numeros(3) =
"tres"
numeros(4) =
"cuatro"
numeros(5) =
"cinco"
numeros(6) =
"seis"
numeros(7) =
"siete"
numeros(8) =
"ocho"
numeros(9) =
"nueve"
numeros(10) =
"diez"
numeros(11) =
"once"
numeros(12) =
"doce"
numeros(13) =
"trece"
numeros(14) =
"catorce"
numeros(15) =
"quince"
numeros(20) =
"veinte"
numeros(30) =
"treinta"
numeros(40) =
"cuarenta"
numeros(50) =
"cincuenta"
numeros(60) =
"sesenta"
numeros(70) =
"setenta"
numeros(80) =
"ochenta"
numeros(90) =
"noventa"
numeros(100) =
"cien"
If (valor = 0) Then
literal =
numeros(valor)
Else
Do
If (valor >= 100)
Then
If (valor = 100)
Then
literal =
numeros(100)
valor = valor -
valor
Else
valor = 0
On Error GoTo
salir
End If
End If
If (valor >= 10
And valor < 100) Then
If (valor < 16)
Then
literal =
literal & numeros(valor)
valor = valor -
valor
Else
literal =
literal & numeros(Int(valor / 10) * 10)
valor = valor -
(Int(valor / 10) * 10)
If (valor > 1) Then
literal =
literal & " y "
End If
End If
End If
If (valor > 0 And
valor < 10) Then
literal = literal
& numeros(valor)
valor = valor -
valor
End If
Loop Until (valor = 0)
End If
salir:
aLiteral = literal
End Function
3. Guarde o siga con los siguientes temas
(Crear un complemento e Instalarlo)
Nota.-
Como puede verse esta función podría mejorarse para las centenas, unidades de
mil, decenas de mil, etc. y podría agregarse soporte para decimales o usarse
para otro tipo de literales.VÍDEO DEMOSTRATIVO:
No hay comentarios:
Publicar un comentario