Está en la página 1de 4

Function calificaciones(numero As Double) As String

Dim Numdecimales As Double

Dim parteEntera, Partedecimal

Dim resultado As String

Dim resultado2 As String

'Creamos tablas de conversión de números a letras

parteEntera = Array("Cero", "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho",
"Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciseis", "Diecisiete",
"Dieciocho", "Diecinueve", "Veinte", _

"Veintiuno", "Veintidos", "Veintitres", "Veinticuatro", "Veinticinco", "Veintiseis", "Veintisiete",


"Veintiocho", "Veintinueve")

Partedecimal = Array("", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta",


"Setenta", "Ochenta", "Noventa")

'Extraemos la parte entera del número y la llamamos entero

Entero = Fix(numero)

'Redondeamos y extraemos el número de decimales de nuestro número a 2 lo llamamos número


de decimales

Numdecimales = Application.WorksheetFunction.Round((numero - Fix(numero)) * 100, 2)

'Ahora trabajamos con el entero dependiendo del valor que tenga

Select Case Entero

Case 0

resultado = "Cero"

'Si el entero tiene un valor entre uno y diez que busque su texto en la tabla ParteEntera

Case 1 To 10

resultado = parteEntera(Entero)

Case Else

resultado = ""

End Select

'Ahora trabajamos con los decimales

Select Case Numdecimales

'Si no hay decimales el texto que devolverá será cero cero

Case 0

DOCENTE ANGELES DE LA A
resultado2 = "cero cero"

'Si el decimal va desde 01 hasta 09 pues se encadena la palabra cero con el texto correspondiente
buscado en la tabla

Case 1 To 9

resultado2 = LCase("cero " & parteEntera(Numdecimales))

'Si los decimales están entre 10 y 29 se busca el texto equivalente en la tabla parte entera

Case 10 To 29

resultado2 = LCase(parteEntera(Numdecimales))

'Por último si los decimales están entre 30 y 99 hay que encadenar las decenas y unidades de los
textos de las mismas

Case 30 To 99

resultado2 = LCase(Partedecimal(Fix(Numdecimales / 10))) & LCase(IIf((Numdecimales Mod 10)


<> 0, " y " & parteEntera(Numdecimales Mod 10), ""))

End Select

'Aquí se une la parte entera (resultado con la palabra "coma" y con la parte decimal (resultado2)

If resultado <> "" Then

calificaciones = resultado & " coma " & resultado2

Else

calificaciones = ""

End If

End Function

--------------------------------------------------------------------------------------

CON MAYUSCULA

--------------------------------------------------------------------------------------

Dim Numdecimales As Double

Dim parteEntera, Partedecimal

Dim resultado As String

Dim resultado2 As String

'Creamos tablas de conversión de números a letras

parteEntera = Array("CERO", "UNO", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO",
"NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE",
"DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUNO", "VEINTIDOS", "VEINTITRES",
"VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")

DOCENTE ANGELES DE LA A
Partedecimal = Array("", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA",
"SETENTA", "OCHENTA", "NOVENTA")

'Extraemos la parte entera del número y la llamamos entero

Entero = Fix(numero)

'Redondeamos y extraemos el número de decimales de nuestro número a 2 lo llamamos número


de decimales

Numdecimales = Application.WorksheetFunction.Round((numero - Fix(numero)) * 100, 2)

'Ahora trabajamos con el entero dependiendo del valor que tenga

Select Case Entero

Case 0

resultado = "CERO"

'Si el entero tiene un valor entre uno y diez que busque su texto en la tabla ParteEntera

Case 1 To 10

resultado = parteEntera(Entero)

Case Else

resultado = ""

End Select

'Ahora trabajamos con los decimales

Select Case Numdecimales

'Si no hay decimales el texto que devolverá será cero cero

Case 0

resultado2 = "CERO"

'Si el decimal va desde 01 hasta 09 pues se encadena la palabra cero con el texto correspondiente
buscado en la tabla

Case 1 To 9

resultado2 = UCase("cero " & parteEntera(Numdecimales))

'Si los decimales están entre 10 y 29 se busca el texto equivalente en la tabla parte entera

Case 10 To 29

resultado2 = UCase(parteEntera(Numdecimales))

'Por último si los decimales están entre 30 y 99 hay que encadenar las decenas y unidades de los
textos de las mismas

Case 30 To 99

resultado2 = UCase(Partedecimal(Fix(Numdecimales / 10))) & UCase(IIf((Numdecimales Mod 10)


<> 0, " y " & parteEntera(Numdecimales Mod 10), ""))

DOCENTE ANGELES DE LA A
End Select

'Aquí se une la parte entera (resultado con la palabra "coma" y con la parte decimal (resultado2)

If resultado <> "" Then

calificaciones = resultado & " COMA " & resultado2

Else

calificaciones = ""

End If

End Function

DOCENTE ANGELES DE LA A

También podría gustarte