domingo, 14 de junio de 2015

Activar o Desactivar una combinación de teclas con VBA

En una publicación anterior (Ver Desactivación de desplazamiento entre Hojas con VBA) les indicaba como desactivar las teclas CTRL AVPAG y CTRL REPAG desde una macros en Excel (con Visual Basic for Application), para evitar el desplazamiento entre hojas.

Sin embargo, la semana pasada una alumna descubrió que también se desplazaba entre hojas con CTRL SHIFT AVPAG y CTRL SHIFT REPAG, por lo que debemos analizar otras opciones.
Luego de buscar en Internet encontré que para cada tecla existe un carácter especial, como por ejemplo:
Tecla Shift = "+" (signo Mas)
Tecla Ctrl = "^"
Tecla Alt = "%" (signo porcentaje)

Si leiste mi publicación anterior observaras que en un procedimiento podemos activar y desactivar las teclas, con la instrucción Application.OnKey como vemos a continuación:

Private Sub Workbook_Activate()
Application.OnKey "^{PGDN}", "" 'Disable Ctrl-PageUp
Application.OnKey "^{PGUP}", "" 'Disable Ctrl-PageDown
Application.OnKey "+^{PGDN}", "" 'Disable Shift-Ctrl-PageUp
Application.OnKey "+^{PGUP}", "" 'Disable Shift-Ctrl-PageDown
End Sub

Y para poder activarlas usamos lo siguiente:

Private Sub Workbook_Deactivate()
Application.OnKey "^{PGDN}"
Application.OnKey "^{PGUP}"
Application.OnKey "+^{PGDN}"
Application.OnKey "+^{PGUP}"
End Sub
Otras teclas que podríamos utilizar son:

Ejemplos de uso:
Este ejemplo asigna "YourMacroName" a la secuencia de teclas SHIFT + CTRL + FLECHA DERECHA 
Application.OnKey "+ ^ {RIGHT}", "YourMacroName" 
Este ejemplo devuelve SHIFT + CTRL + FLECHA DERECHA para su significado normal. 
Application.OnKey "+ ^ {RIGHT}" 
En este ejemplo se deshabilita el SHIFT + secuencia de teclas CTRL + FLECHA DERECHA. 
Application.OnKey "+ ^ {RIGHT}", ""
También puede utilizarlo para desactivar una acceso directo incorporado, como Ctrl p que puede utilizar para imprimir. 
Application.OnKey "^ p", ""
Espero que les sirva esta publicación.
Saludos

Ing. Enrique Neciosup Morales