Curso Excel VBA y Macros – Cap. 42 – OnKey para ejecutar macros con combinación de teclas
En este video tutorial seguiremos con el tema de eventos en Excel. Ya vimos que los eventos son acciones que les suceden a los objetos de Libro (Workbook) u Hoja (Worksheet), como son: al abrir un archivo, al cerrar un archivo, al seleccionar celdas, al modificar celdas, etc.
En este video tutorial veremos el segundo Evento no asociado a objetos, el cual es OnKey. Éste evento nos ayudará a ejecutar macros utilizando pulsaciones de teclas, ya sea al presionar alguna tecla o una combinación de ellas. Este evento también se considera Método.
Este es el quinto video tutorial de una serie de videos relacionados con los eventos:
- Eventos de Libro (Workbook).
- Eventos de Hoja (Worksheet).
- Eventos de Formulario (UserForm).
- Eventos no asociados a objetos.
- OnTime.
- OnKey.
- Eventos de Aplicación (Application).
Ver video Capítulo 42 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Evento OnKey para ejecutar macros usando teclado
Al poder asignar la ejecución de macros al presionar ciertas teclas, tenemos la oportunidad de personalizar nuestros archivos con funcionalidades interesantes. Veremos 3 ejemplos usando el evento OnKey.
- Asignar macro a una tecla.
- Asignar macro a una combinación de teclas.
- Deshabilitar combinaciones conocidas en Excel.
Sintaxis
En la siguiente línea vemos cómo podemos usar el evento ó método OnKey.
Application. OnKey (Clave, procedimiento)
Dónde:
ARGUMENTO | DESCRIPCIÓN |
Key | La clave que hace referencia a la tecla o teclas que se presionarán. |
Procedimiento | El texto que indica el nombre de la macro que se ejecutará. Si ingresamos solo “” (vacío), no sucede nada cuando presionamos una tecla. Si el argumento Procedimiento se omite, Key vuelve a su estado normal en Excel. Esto es útil si acaso reemplazamos la acción de una combinación conocida en Excel. |
Códigos de teclas para utilizar con OnKey
La siguiente tabla nos muestra los códigos que podemos usar si deseamos que se presiona alguna tecla especial.
TECLA | CÓDIGO |
Retroceso | {BACKSPACE} or {BS} |
Pause | {BREAK} |
BloqMayús | {CAPSLOCK} |
Limpiar | {CLEAR} |
Suprimir | {DELETE} or {DEL} |
Flecha abajo | {DOWN} |
Fin | {END} |
Enter | {ENTER} |
Esc | { ESCAPE} or {ESC} |
Ayuda | {HELP} |
Inicio | {HOME} |
Insertart | {INSERT} |
Fecha izquierda | {LEFT} |
BloNum | {NUMLOCK} |
AvPág | {PGDN} |
RePág | {PGUP} |
Intro | {RETURN} |
Fecha derecha | {RIGHT} |
SCROLL LOCK | {SCROLLLOCK} |
Tabulador | {TAB} |
Fecha arriba | {UP} |
F1 hasta F15 | {F1} hasta {F15 |
Los códigos anteriores los podremos combinar con las siguientes teclas especiales.
TECLA PARA COMBINAR | CÓDIGO |
Shift | + (signo de más) |
Ctrl | ^ (acento circunflejo) |
Alt | % (signo de porcentaje) |
Macro de prueba Pedir confirmación para borrar contenido de celda
Tenemos una macro de prueba que nos pide confirmación para borrar el contenido de una celda o un rango de celdas. Dicha macro la asignaremos al momento de presionar la tecla Suprimir. A continuación la macro:
Sub SUPR() Dim Confirmacion As Integer 'Si la selección es un Rango If VBA.TypeName(Selection) = "Range" Then Confirmacion = MsgBox("Desea borrar el contenido?", vbYesNo + vbQuestion) If Confirmacion = vbYes Then Selection.ClearContents Else End If Else Selection.Delete End If End Sub
Ejemplo 1. Asignar macro a la tecla Suprimir.
El siguiente código vba será para asignar la macro SUPR cuando se presione la tecla Suprimir.
Sub ActivarSUPR() Application.OnKey "{DEL}", "SUPR" End Sub
Y el siguiente código será para devolver el comportamiento normal a la tecla Suprimir, es decir, que no lance la macro al momento de presionarla.
Sub DesactivarSUPR() Application.OnKey "{DEL}" End Sub
Ejemplo 2. Asignar macro a combinación de teclas
La siguiente macro nos ayudará a asignar la ejecución de macros a combinaciones de teclas, ya sea usando la tecla Shift, Control, Alt o combinación de 3 teclas.
Sub CombinacionON() Application.OnKey "+{RIGHT}", "ShiftDerecha" Application.OnKey "^{ESC}", "ControlEscape" Application.OnKey "%{RIGHT}", "AltDerecha" Application.OnKey "^+{RIGHT}", "ControlShiftDerecha" End Sub
Con la siguiente macro le devolveremos el comportamiento originar a las combinaciones de la macro anterior.
Sub CombinacionOFF() Application.OnKey "+{RIGHT}" Application.OnKey "^{ESC}" Application.OnKey "%{RIGHT}" Application.OnKey "^+{RIGHT}" End Sub
Ejemplo 3. Prohibir la combinación Control + C
En la siguiente macro logramos deshabilitar la combinación de teclas Control + C que nos ayuda a copiar rangos u objetos.
imaginar que deseas proteger tu hoja. Podemos prohibir el uso de Control + C, además de prohibir el uso del clic derecho usando el evento BeforeDoubleClick.
Sub CopiarOFF() 'Application.OnKey "^{c}", "NoCopiar" Application.OnKey "^{c}", "" End Sub
Es importante tener una macro para restablecer el comportamiento de las combinaciones que actualmente tiene Excel. Como sugerencia podemos asignar la siguiente macro al evento BeforeClose del archivo.
Sub CopiarON() Application.OnKey "^{c}" End Sub
Descarga el archivo de ejemplo
042 – Evento OnKey para ejecutar macros con combinación de teclas.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.