lunes, 2 de marzo de 2015

Desactivación de desplazamiento entre Hojas con VBA


Como les mencionaba en un post anterior, estos últimos años me he dedicado al desarrollo de herramientas con Visual Basic for Application, y surgió un problema la semana pasada. Siempre acostumbro ocultar las etiquetas de las hojas, para que los usuarios no puedan desplazarse entre ellas, excepto cuando hagan clic en el botón indicado.
Pues la semana pasada me indicaron que si se podía desplazar entre hojas presionando las teclas CTRL - AVPAG y CTRL REPAG.


Ante esta situación, me puse a investigar en Internet y encontré la siguiente respuesta:
"...Excel ofrece una variedad de maneras que usted puede pasar de una hoja a otra en un libro. Si desea desactivar moverse entre las hojas de trabajo, usted tiene una tarea difícil en frente de usted debido a la variedad de métodos que hay que hacer algo al respecto.
Por ejemplo, una forma de moverse entre las hojas de trabajo es presionar Ctrl + RePág o Ctrl + AvPág . Para desactivar estas teclas para un libro determinado, es necesario utilizar el método OnKey, de la siguiente manera:
Estas dos macros deben ser colocados en el objeto ThisWorkbook. El primero se ejecuta cada vez que se activa el libro y se desactiva Ctrl + Re Pág y Ctrl + Av Pág por no tener nada de ejecución cuando se presionan. La segunda macro se ejecuta cuando el libro se desactiva y vuelve a activar las teclas.

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

Private Sub Workbook_Deactivate()
Application.OnKey "^{PGDN}"
Application.OnKey "^{PGUP}"
End Sub

Una vez colocado ese código, ya no se podrá utilizar las teclas indicadas.

Saludos

Ing. Enrique Neciosup Morales