Todos sabemos que en excel no existe el convertir a MAYÚSCULAS las celdas con textos en minúsculas, pero he aquí la solución.."siempre la solución mas simple es la correcta". Seria mas útil si instalamos esta macro en un botón en la cinta de opciones.
‘Método que devuelve el valor
literal en mayúsculas de la celda (s) seleccionada E. hola ->HOLA
Archivo en Excel descargable para evaluación.. aun no esta terminado pero me gustaría ir solucionando los bugs y errores en el algoritmo..
Los datos deben ser introducidos en las celdas con el fondo o relleno verde. Espero sus comentarios y criticas para hacer correcciones. Gracias
He desarrollado para demostración un
sistema de control de Alumnos mal llamado “Control Docente”. Este Libro Gestiona la inscripción, inserta nuevos alumnos y controla la asistencia, prácticos, exámenes y entrega la Nota Final. Ordena los alumnos por Curso, Apellido Paterno, Apellido Materno.
Private Sub CommandButton1_Click()
‘Boton Insertar Alumno Nuevo
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim fil As Long: Dim col As Long: Dim nro As Integer
3. Clic en
Guardar. Note que se guarda en la carpeta de Complementos pero deberá
activar el complemento con los pasos indicados en tema siguiente 22. Activar o
Instalar Complementos
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:
Las funciones son métodos que devuelven
solo un tipo de resultado en contraste con los procedimientos que pueden
devolver ningún o más de un resultado.
Ej.
Function nombreFuncion (ByVal [parámetros]) As
tipoDato ‘función con parámetros
por valor
[Sentencias]
nombreFuncion = [ResultadoDevuelto]
End Function
Sub nombreFuncion (ByRef [parámetros])‘procedimiento con parámetros por Referencia
[Sentencias]
End Function
LOS PARÁMETROS VBA
Pueden ser por valor o por referencia.
Por
valor, quiere decir que se pasa una copia del valor
original y cualquier cambio en esta no afecta a la original
Por
referencia, se
crea un apuntador a la variable original por lo que cualquier cambio en el
valor de la variable local afectara a la variable original