Corregir errores en macros de excel
Deseo que los números en letras de los decimales estén en mayúsculas
Function Calificaciones(numero As Double) As String
Dim Numdecimales As Double
Dim ParteEntera, Partedecimal
Dim resultado As String
Dim resultado2 As String
'Churoche denle un like y apoyen si les gustó----------------------------------
'Creamos las 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", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiuno", "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "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 Numdecimales
Numdecimales = Application.WorksheetFunction.Round((numero - Fix(numero)) * 100, 2)
'Ahora vamos trabajar con el entero dependiendo del valor que tenga
Select Case Entero
'Si el entero tiene un valor de cero pues su texto correspondiente es ese mismo
Case 0
resultado = "CERO"
'Si el entero tiene un valor de entre uno y diez que busque su texto en la tabla ParteEntera
Case 1 To 10
resultado = ParteEntera(Entero)
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 CERO"
'Si el decimal va desde 01 a 09 pues se encadenará la palabra cero con el texto correspondiente buscando en la tabla
'ParteEntera y se vuelve todo en mayúsculas
Case 1 To 9
resultado2 = LCase(" CERO " & ParteEntera(Numdecimales))
'Si los decimales están entre 10 y 29 se busca su texto en la tabla ParteEntera Y se vuelve a Mayúscula todo el texto
Case 10 To 29
resultado2 = LCase(ParteEntera(Numdecimales))
'Por último si los decimales están entre 30 y 99 hay encadenar las decenas y unidades del mismo
Case 30 To 99
resultado2 = LCase(Partedecimal(Fix(Numdecimales / 10)) & IIf((Numdecimales Mod 10) <> 0, " Y " & ParteEntera(Numdecimales Mod 10), ""))
End Select
Calificaciones = resultado & " COMA " & resultado2
'Aquí se une la parte entera (resultado) con la palabra "coma" y con la parte decimal (resultado2)
End Function
