Forzar mayúsculas


Muchas veces se desea que, sin importar el estado de Caps Lock o de las teclas Shift, el texto que el usuario tipee aparezca en mayúsculas. Esto se logra con un simple código a agregar en cada componente que se desee este efecto. El nuestro caso emplearemos un TextBox llamado Nombre al cual le agregaremos código en su evento KeyPress.

Sub Nombre_KeyPress (KeyASCII As Integer)
KeyASCII = Asc(UCase(Chr(KeyASCII)))

End Sub

Nótese que lo que la función hace es devolver el valor ASCII del caracter mayúsculo correspondiente al caracter generado a partir del ASCII por Chr. En otras palabras se hace una letra con la tecla que el usuario pulso. Esa letra se convierte en mayúsculas y se la convierte en valor ASCII nuevamente para pasárselo al control.

Un truco interesante es hacer en un módulo BAS del proyecto una función que reciba un ASCII cualquiera que sea y retorne el mismo en mayúscula. De esta forma quedaría la función:

Function CMay (Key As Integer)
CMay = Asc(UCase(Chr(Key)))

End Sub

La función recibe un dato entero que almacena en Key. Ese dato lo hace caracter, lo convierte en mayúsculas y lo retorna a ASCII para pasarlo como resultado de función. Y sólo sería necesario en cada control agregar lo siguiente:

Sub Nombre_KeyPress (KeyASCII As Integer)
KeyASCII = CMay(KeyASCII)

End Sub

La función CMay recibe el ASCII tipeado y retorna el correspondiente en mayúscula. Como ven, es mas simple para cuando se tienen muchos controles a convertir.

Autor: Pablo Canello