Compartir a través de


Evento Form.KeyDown (Access)

El evento KeyDown se produce cuando el usuario presiona una tecla mientras un formulario o control tiene el foco. Este evento se produce también si se envía una pulsación de tecla a un formulario o control mediante la acción SendKeys en una macro o la instrucción SendKeys en Visual Basic.

Sintaxis

expresión. KeyDown (KeyCode, Shift)

expresión Variable que representa un objeto Form.

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
KeyCode Obligatorio Integer Un código de clave, como vbKeyF1 (la clave F1) o vbKeyHome (la clave principal). Para especificar códigos de tecla, use las constantes intrínsecas que se muestran en el Examinador de objetos. Puede evitar que un objeto reciba una pulsación de tecla estableciendo KeyCode en 0.
Shift Obligatorio Integer Estado de las teclas Mayús, Ctrl y Alt en el momento del evento. Si necesita probar el argumento Mayús , puede usar una de las siguientes constantes intrínsecas como máscaras de bits:
  • acShiftMask Máscara de bits para la tecla Mayús.

  • acCtrlMask Máscara de bits para la tecla Ctrl.

  • acAltMask Máscara de bits para la tecla Alt.

Comentarios

El evento KeyDown solo se aplica a los formularios y controles de un formulario, y no a los controles de un informe.

Para ejecutar una macro o procedimiento de evento cuando se produzcan estos eventos, establezca la propiedad OnKeyDown en el nombre de la macro o en [procedimiento de evento].

Para ambos eventos, el objeto que tiene el enfoque recibe todas las pulsaciones de teclas. Un formulario sólo puede tener el enfoque si no tiene controles o todos los controles visibles están deshabilitados.

Un formulario también recibirá todos los eventos de teclado, incluso los que se producen para los controles, si establece la propiedad KeyPreview del formulario en Sí. Con esta configuración de las propiedades, todos los eventos de teclado se producirán primero para el formulario y, a continuación, para el control que tiene el foco. Puede responder a teclas específicas presionadas en el formulario, independientemente de qué control tiene el foco. Por ejemplo, es posible que quiera que la combinación de teclas CTRL+X realice siempre la misma acción en un formulario.

Si presiona y mantiene presionada una tecla, los eventos KeyDown y KeyPress se alternan repetidamente (KeyDown, KeyPress, KeyDown, KeyPress, etc.) hasta que suelta la tecla y, a continuación, se produce el evento KeyUp .

Aunque el evento KeyDown se produce cuando se presionan la mayoría de las teclas, suele usarse para reconocer o distinguir entre:

  • Teclas de caracteres extendidos, como las teclas de función.

  • Teclas de navegación, como Inicio, Fin, PgUp, PgDn, Flecha arriba, Flecha abajo, Flecha derecha, Flecha izquierda y Pestaña.

  • Combinaciones de teclas y modificadores de teclado estándar (teclas Mayús, Ctrl o Alt).

  • Teclas del teclado numérico y teclas de números del teclado.

El evento KeyDown no se produce cuando se presiona:

  • La tecla Entrar si el formulario tiene un botón de comando para el que la propiedad Default está establecida en Sí.

  • La tecla Esc si el formulario tiene un botón de comando para el que la propiedad Cancelar está establecida en Sí.

El evento KeyDown se produce al presionar o enviar una tecla ANSI. El evento KeyUp se produce después de cualquier evento de un control causado por presionar o enviar la tecla. Si una pulsación de tecla hace que el foco se mueva de un control a otro control, el evento KeyDown se produce para el primer control, mientras que los eventos KeyPress y KeyUp se producen para el segundo control.

Para averiguar el carácter ANSI correspondiente a la tecla presionada, use el evento KeyPress.

Si se muestra un cuadro de diálogo modal como consecuencia de presionar o enviar una tecla, se producen los eventos KeyDown y KeyPress, pero no el evento KeyUp.

Ejemplo:

En el ejemplo siguiente se determina si ha presionado las teclas Mayús, Ctrl o Alt.

Para probar el ejemplo, agregue el siguiente procedimiento de evento a un formulario que contenga un cuadro de texto denominado KeyHandler.

Private Sub KeyHandler_KeyDown(KeyCode As Integer, _ 
     Shift As Integer) 
    Dim intShiftDown As Integer, intAltDown As Integer 
    Dim intCtrlDown As Integer 
 
    ' Use bit masks to determine which key was pressed. 
    intShiftDown = (Shift And acShiftMask) > 0 
    intAltDown = (Shift And acAltMask) > 0 
    intCtrlDown = (Shift And acCtrlMask) > 0 
    ' Display message telling user which key was pressed. 
    If intShiftDown Then MsgBox "You pressed the Shift key." 
    If intAltDown Then MsgBox "You pressed the Alt key." 
    If intCtrlDown Then MsgBox "You pressed the Ctrl key." 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.