Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Blog Post

Anular la pulsación de teclas

11 de marzo de 2024 ACCESS, El rincón de Happy, Formularios

Pregunta

¿Cómo puedo anular el efecto de la pulsación de teclas como el RePag, AvPag, Esc o similares al trabajar con formularios?

Respuesta

Si quieres anular la pulsación de alguna tecla al trabajar con formularios, primero debes ir a la ventana de propiedades del formulario y poner la propiedad Tecla de vista previa (KeyPreview) a Sí. De esta manera, se fuerza a que el formulario sea el primero en detectar la pulsación de cualquier tecla, antes de que lo haga el control activo en ese momento, que, de otra manera, sería el primero en hacerlo. Después deberemos utilizar algún tipo de código para detectar la pulsación de la tecla en el evento Al bajar una tecla (KeyDown) y anularla. Este evento detecta prácticamente todas las pulsaciones de teclas, en detrimento del evento Al presionar una tecla (KeyPress) que sólo detecta las teclas típicas de la escritura como son los caracteres alfanuméricos y los símbolos utilizados en los diferentes idiomas.

En nuestro caso, podemos llamar a una función genérica que he construído y que servirá para anular cualquier tipo de tecla que le pasemos en su segundo parámetro, el cual tiene un número de elementos indeterminado.

La función DeleteKeys tiene los siguientes argumentos

Argumentos

NombreDescripción
KeyCodeRequerido. El valor de la tecla pulsada y que está recogida en el primer argumento del evento KeyDown, del mismo nombre: KeyCode
KeysOpcional. Lista separada por comas de los valores ASCII o las constantes Visual Basic (ver estas constantes en este enlace) de las teclas que se quieren anular.

Esta función también puede ser utilizada a través del evento KeyDown de un control. Funcionará de la misma manera que para un formulario.

Ejemplo de uso

' esta llamada a la función DeleteKeys anulará la pulsación de las
' teclas RePag y AvPag en el evento KeyDown de un formulario
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Call HelpKeys(KeyCode, vbKeyPageUp, vbKeyPageDown)
End Sub

Codigo

Pega esta función en un módulo estandar:

'---------------------------------------------------------
'
' DeleteKeys
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function DeleteKeys(KeyCode As Integer, ParamArray Keys() As Variant) As Integer
Dim Key As Variant

    For Each Key In Keys
        If KeyCode = Key Then
            KeyCode = 0
            Exit Function
        End If
    Next
        
End Function
'---------------------------------------------------------

Créditos

con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Access en español, y tras solicitar su permiso, replico este artículo de Juan M Afán de Ribera. Todos los derechos y autoría corresponden a él. Access & VBA FAQ – Anular la pulsación de teclas (archive.org)

Taggs:
Related Posts
Opciones de impresión a través de código

Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…

Totales por página

Cómo conseguir en un informe calcular sólo el total para cada página

Write a comment