Evento CommandButton.KeyPress (Access)

El evento KeyPress se produce cuando el usuario presiona y suelta una tecla o una combinación de teclas que corresponda a un código ANSI mientras el foco se encuentra en un formulario o control. Este evento también se produce al enviar una pulsación de tecla ANSI a un formulario o control mediante la acción SendKeys en una macro o la instrucción SendKeys de Visual Basic.

Sintaxis

expresión. KeyPress (KeyAscii)

Expresión Variable que representa un objeto CommandButton .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
KeyAscii Obligatorio Integer Devuelve un código de tecla ANSI numérico. El argumento KeyAscii se pasa mediante referencia; al cambiarlo, se envía otro carácter al objeto. Al establecer el argumento KeyAscii en 0, se cancela la pulsación de la tecla de modo que el objeto no reconoce que se haya presionado una tecla.

Observaciones

Para ejecutar una macro o procedimiento de evento cuando se produzca este evento, establezca la propiedad OnKeyPress en el nombre de la macro o en [Procedimiento de evento].

El objeto que tenga el enfoque recibe todas las pulsaciones de teclas. Un formulario sólo puede tener el enfoque si no contiene controles, o si todos sus 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 ANSI, los eventos KeyDown y KeyPress se alternan repetidamente (KeyDown, KeyPress, KeyDown, KeyPress, etc.) hasta que suelte la tecla, después se producirá el evento KeyUp.

Un evento KeyPress puede incluir cualquier carácter imprimible del teclado, la tecla Ctrl combinada con un carácter del alfabeto estándar o carácter especial y la tecla Entrar o Retroceso. Use los procedimientos de eventos KeyDown y KeyUp para controlar cualquier pulsación de tecla no reconocida por el evento KeyPress , como teclas de función, teclas de navegación y cualquier combinación de estas con modificadores de teclado (teclas Alt, Mayús o Ctrl). A diferencia de los eventos KeyDown y KeyUp, el evento KeyPress no indica el estado físico del teclado, sino el carácter ANSI que corresponde a la tecla o combinación de teclas presionada.

KeyPress interpreta las formas mayúscula y minúscula de cada carácter como códigos de teclas diferentes, y por ello las considera dos caracteres distintos.

Nota:

La tecla Retroceso forma parte del conjunto de caracteres ANSI, pero no la tecla Suprimir. Si elimina un carácter de un control con la tecla Retroceso, provocará un evento KeyPress, pero no lo hará si usa la tecla Suprimir.

Los eventos KeyDown y KeyPress se producen al presionar o enviar una tecla ANSI. El evento KeyUp se ejecutará después de cualquier evento para 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, el evento KeyDown se produce para el primer control, mientras que los eventos KeyPress y KeyUp se producen eventos para el segundo control.

Por ejemplo, si se desplaza a un nuevo registro y escribe un carácter en su primer control, se producirán los siguientes eventos:

  • Current (para el nuevo registro)
  • Enter (para el primer control del nuevo registro)
  • GotFocus (para el control)
  • KeyDown (para el control)
  • KeyPress (para el control)
  • BeforeInsert (para el nuevo registro del formulario)
  • Change (para el control si es un cuadro de texto o combinado)
  • KeyUp (para el control)

Ejemplo

En el ejemplo siguiente se pasa a mayúsculas el texto escrito de un cuadro de texto mientras se escribe, carácter a carácter.

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

Private Sub ShipRegion_KeyPress(KeyAscii As Integer) 
 Dim strCharacter As String 
 
 ' Convert ANSI value to character string. 
 strCharacter = Chr(KeyAscii) 
 ' Convert character to upper case, then to ANSI value. 
 KeyAscii = Asc(UCase(strCharacter)) 
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.