jueves, 11 de febrero de 2016

Deshabilitar Teclas de Función con código VBA


Algunas veces necesitamos bloquear ciertas teclas de función, para evitar que los usuarios ingresen a determinadas características de nuestro libro de trabajo; como puede ser el caso de la combinación de teclas ALT+F11, la cual nos permite acceder de una forma práctica y sencilla hacia el entorno VBA.
También podríamos deshabilitar la tecla ALT+F8, con la cual accedemos al listado de macros creadas.



Pues, en este artículo aprenderás cómo deshabilitar algunas teclas de funciones, brindando cierta seguridad a tus libros de trabajo.

Ok, comencemos!

Lo que vamos a hacer, es deshabilitar las siguientes combinaciones de teclas:
ALT+F8, la cual nos permite ver el listado de las macros creadas,
ALT+F11, nos permite dirigirnos al Editor de Visual Basic, y
F12, nos permite la opción "Guardar como..."
Pues, vamos a bloquear estas características en nuestro libro de trabajo.

Dirígete al entorno VBA e inserta un nuevo módulo, en donde pegarás el siguiente código de programación:

Dim Cancel As Boolean

Sub DeshabilitarTecla()
    Cancel = True
    MsgBox "Tecla deshabilitada!", vbInformation
End Sub

Sub HabilitarTeclas()
    Application.OnKey "%{F8}"
    Application.OnKey "%{F11}"
    Application.OnKey "{F12}"
End Sub


Como puedes ver en la siguiente imagen, siempre al inicio tengo declarado Option Explicit, lo cual me aparece de forma predeterminada cada vez que agrego un módulo nuevo, porque yo así lo tengo establecido en las opciones.
Option Explicit nos obliga a declarar todas y cada una de las variable y de esa forma evitamos errores en la declaración de las mismas.
El código pegado te tiene que quedar de la siguiente manera:



Luego das doble clic sobre el objeto ThisWorkbook, para insertar las siguientes líneas:

Private Sub Workbook_Open()
    Application.OnKey "%{F8}", "DeshabilitarTecla"
    Application.OnKey "%{F11}", "DeshabilitarTecla"
    Application.OnKey "{F12}", "DeshabilitarTecla"
End Sub

Para que te ubiques cuál es el objeto Thisworkbook, checa la siguiente imagen:




Ok, ahora te explico el código VBA.

Dentro del evento OPEN del objeto ThisWorkbook, hemos insertado tres líneas de código, utilizando la sentencia Application.OnKey con lo cual hacemos referencia a la tecla que deseamos deshabilitar. Puedes observar que tenemos el procedimiento "DeshabilitarTecla", el cual llamamos desde la misma línea, para deshabilitar la tecla en referencia.

Ahora bien, el procedimiento "DeshabilitarTecla", es el que pegaste en el Módulo1, en conde estamos manejando la variable Cancel de tipo Buleano, para establecer que las teclas en referencia desde el Evento OPEN, quedarán inactivas. Cabe destacar que el evento OPEN, dispara las líneas de código insertadas, en el preciso momento que abrimos nuestro libro de trabajo y de esa forma las teclas mencionadas quedarán inactivas,
Cada vez que presionemos una de las teclas deshabilitadas, nos aparecerá el siguiente mensaje:



Si tu quieres, puedes omitir ese mensaje, borrando dicha línea de código.

Para finalizar, tenemos el procedimiento "HabilitarTeclas", lo que nos permitirá reactivar dichas características, Este procedimiento lo puedes asignar a algún botón, en dado caso quieras habilitar las teclas nuevamente.

Para este ejemplo, no olvides guardar tu libro de trabajo como "Libro de Excel habilitado para macros"

Muy bien, espero que esto te sea de utilidad, y si es así, compártelo con tus amigos en las diferentes redes sociales.

Nos vemos en la próxima entrega.

Saludos!



9 comentarios:

  1. Gracias, profesor. Interesante y ùtil macro.

    ResponderEliminar
  2. Muy intetesante, y como siempre, explucado a detalle y de una manera muy amena, sencillo y profesional. Mil gracias.

    ResponderEliminar
  3. Muy interesante, y como siempre, explicado de una manera muy amena, fácil de entender y muy profesional. Mil gracias

    ResponderEliminar
  4. Muy intetesante, y como siempre, explucado a detalle y de una manera muy amena, sencillo y profesional. Mil gracias.

    ResponderEliminar
  5. Muy intetesante, y como siempre, explucado a detalle y de una manera muy amena, sencillo y profesional. Mil gracias.

    ResponderEliminar
  6. Muchas Gracias profesor, muy interesante y bien explicado.

    ResponderEliminar
  7. se puede ejecutar una de esas combinaciones de tecla solo con macro sin utilizar el teclado?

    ResponderEliminar
  8. muy interesante, pero si en algunas celdas quiero que solo me ingrese numeros decimales positivos y si presiono alguna letra simplemente que no sea ingresada no pase nada solo al ingresar numeros decimales en el evento open como funcionaria lesagradesco su ayuda gracias

    ResponderEliminar
  9. Muy interesante, gracias por el aporte.

    ResponderEliminar