lunes, 14 de noviembre de 2011

20. FUNCIÓN QUE DEVUELVE EL LITERAL DE UN NUMERO


Función que devuelve el literal de un número entero entre 0 y 100
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