Asignar macros a teclas o combinación de teclas en Excel usando OnKey

Hace un par de semanas, un suscriptor de mi canal en Youtube me hizo la pregunta de cómo ejecutar una macro presionando la tecla Suprimir de nuestro teclado. Es por eso que me decidí a escribir este artículo y a grabar el video.

Ejemplos

Te mostraré 3 ejemplos en dónde usaremos el método OnKey para detectar cuando presionamos teclas en Excel:

Asignar macro a una tecla.

Asignar macro a una combinación de teclas.

Deshabilitar teclas y combinaciones de teclas.

Ver video Asignar macros a teclas o combinaciones de teclas

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Códigos para utilizar el método OnKey

Es importante identificar el código de las teclas que usaremos con el método OnKey

TECLA CÓDIGO
BACKSPACE {BACKSPACE} or {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
CLEAR {CLEAR}
DELETE or DEL {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER (numeric keypad) {ENTER}
ENTER ~ (tilde)
ESC { ESCAPE} or {ESC}
HELP {HELP}
HOME {HOME}
INS {INSERT}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RETURN {RETURN}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 through F15 {F1} through {F15

Así como el código de las teclas que usaremos para combinar con otras teclas.

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:

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh

Sub Eliminar()

Dim Confirmacion As String

'Si la selección es un Rango
If TypeName(Selection) = "Range" Then
    Confirmacion = MsgBox("Borrar contenido?", vbYesNo + vbQuestion)
    If Confirmacion = vbYes Then
    Selection.ClearContents
    Else
    End If
Else
'Si la selección no es un rango elimina lo seleccionado
Selection.Delete
End If

End Sub

Eventos Open y BeforeClose

Un evento es lanzado cuando sucede alguna acción en Excel. El evento Open se lanzará al momento de abrir el archivo y el evento BeforeClose se lanzará al cerrar el archivo. Abrimos el IDE de Visual Basic para aplicaciones con [Ctrl] + [F11] para mostrar ambos eventos.

Para mostrar el evento Open:

  • Damos doble clic en el objeto ThisWorkbook.
  • Damos clic en el combo que dice General.
  • Elegimos Workbook.

Mostramos el evento Workbook_Open en Excel.

Figura 1. Mostramos el evento Workbook_Open en Excel.

Para mostrar el evento BeforeClose damos clic en el Combo de la derecha.

Mostraremos el evento BeforeClose en Excel.

Figura 2. Mostraremos el evento BeforeClose en Excel.

Ejemplo 1. Asignar macro a la tecla Suprimir.

El siguiente código vba irá dentro del evento Open, y será para asignar la macro Eliminar cuando se presione la tecla Suprimir.

Application.OnKey "{DEL}", "Eliminar"

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.

Application.OnKey "{DEL}"

Ahora, al momento de presionar la tecla Suprimir se lanzará la macro Eliminar. Hacemos una prueba con la aplicación Teclado en pantalla.

. Al presionar Supr, nos pide confirmación para borrar el contenido.

Figura 3. Al presionar Supr, nos pide confirmación para borrar el contenido.

Asignar macros a combinaciones de teclas

Ejemplo 2. Asignar macro a la combinación [Shift] + [Tecla derecha]

Application.OnKey "+{RIGHT}", "ShiftDerecha"

Ejemplo 3. Asignar macro a la combinación [Control] + [Tecla derecha]

Application.OnKey "^{RIGHT}", "ControlDerecha"

Ejemplo 4. Asignar macro a la combinación [Alt] + [Tecla derecha]

Application.OnKey "%{RIGHT}", "AltDerecha"

Ejemplo 5. Asignar macro a la combinación [Control] + [Shift] + [Tecla derecha]

Application.OnKey "^+{RIGHT}", "ControlShiftDerecha"

Ejemplo 6. Deshabilitar la combinación [Control] + [c] (copiar).

Application.OnKey "^{c}", ""

Restablecer teclas

Las siguientes macros ayudarán a que las combinaciones que asignamos en las macros anteriores regresen a su comportamiento normal.

Application.OnKey "{DEL}"
Application.OnKey "+{RIGHT}"
Application.OnKey "^{RIGHT}"
Application.OnKey "%{RIGHT}"
Application.OnKey "^+{RIGHT}"
Application.OnKey "^{c}"

Eventos Activate y Deactivate

Y qué sucede cuando tenemos varios archivos abiertos pero queremos que estas asignaciones de macros sólo estén disponibles en determinado archivo? Ahí es donde debemos usar los eventos Activate y Deactive para que se lancen al momento de estar en un archivo y se restablezcan las teclas al momento de cambiarse a otro.

Private Sub Workbook_Activate()
'Al momento de activar el archivo
AsignarMacros

End Sub

Private Sub Workbook_Deactivate()
'Al momento de cambiarse a otro archivo
RestablecerTeclas

End Sub

Descargar el archivo de ejemplo

Descargar el ejemplo Asignar macros a teclas o combinación de teclas en Excel usando OnKey.rar

You may also like...