Compartilhar via


Evento Form.KeyDown (Access)

O evento KeyDown ocorra quando o usuário pressiona uma tecla enquanto um formulário ou controle tenha o foco. Esse evento também ocorre se você enviar um pressionamento de tecla para um formulário ou controle usando a ação EnviarSequênciaDeCaracteres em uma macro ou da instrução SendKeys no Visual Basic.

Sintaxe

expressão. KeyDown (KeyCode, Shift)

expressão Uma variável que representa um objeto Form.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
KeyCode Obrigatório Integer Um código de chave, como vbKeyF1 (a chave F1) ou vbKeyHome (a chave inicial). Para especificar códigos de tecla, use as constantes intrínsecas mostradas no Pesquisador de objetos. Você pode impedir que um objeto receba um toque de tecla definindo KeyCode como 0.
Shift Obrigatório Integer O estado das chaves Shift, Ctrl e Alt no momento do evento. Se você precisar testar o argumento Shift , poderá usar uma das seguintes constantes intrínsecas como máscaras de bit:
  • acShiftMask A máscara de bit para a chave Shift.

  • acCtrlMask A máscara de bit para a chave Ctrl.

  • acAltMask A máscara de bit para a tecla Alt.

Comentários

O evento KeyDown se aplica apenas a formulários e controles em um formulário e não a controles em um relatório.

Para executar um macro ou procedimento de evento quando esses eventos ocorrerem, defina a propriedade OnKeyDown com o nome da macro ou como [procedimento do evento].

Para ambos os eventos, o objeto com o foco recebe todos os pressionamentos de teclas. Um formulário pode ter o foco somente se não tiver controles ou se todos os seus controles visíveis estiverem desativados.

Um formulário também receberá todos os eventos de teclado, mesmo aqueles que ocorrem para controles, se você definir a propriedade KeyPreview do formulário como Sim. Com a configuração dessa propriedade, todos os eventos de teclado ocorrem primeiro para o formulário e, em seguida, para o controle que tem o foco. Você pode responder a teclas específicas pressionadas no formulário, independentemente de qual controle tem o foco. Por exemplo, talvez você queira que a combinação de chaves Ctrl+X sempre execute a mesma ação em um formulário.

Se você pressionar e segurar uma tecla, os eventos KeyDown e KeyPress alternarão repetidamente (KeyDown, KeyPress, KeyDown, KeyPress e assim por diante) até que você libere a chave e, em seguida, o evento KeyUp ocorra.

Embora o evento KeyDown ocorra quando a maioria das teclas é pressionada, ele geralmente é utilizado para reconhecer ou diferenciar:

  • Teclas de caracteres estendidos, como as teclas de função.

  • Chaves de navegação, como Home, End, PgUp, PgDn, Seta para cima, seta para baixo, seta para a direita, seta para a esquerda e Tab.

  • Combinações de teclas e modificadores de teclado padrão (teclas Shift, Ctrl ou Alt).

  • O teclado numérico e teclas numéricas do teclado.

O evento KeyDown não ocorre quando você pressiona:

  • A tecla Enter se o formulário tiver um botão de comando para o qual a propriedade Default será definida como Sim.

  • A chave Esc se o formulário tiver um botão de comando para o qual a propriedade Cancelar será definida como Sim.

O evento KeyDown ocorra quando você pressiona ou envia uma tecla ANSI. O evento KeyUp ocorre depois de qualquer evento para um controle gerado pelo pressionamento ou envio da tecla. Se um pressionamento de tecla faz o foco mover de um controle para outro controle, o evento KeyDown ocorra para o primeiro controle, enquanto os eventos KeyPress e KeyUp ocorrem para o segundo controle.

Para descobrir o caractere ANSI correspondente à tecla pressionada, utilize o evento KeyPress.

Se uma caixa de diálogo restrita for exibida como resultado do pressionamento ou envio de uma tecla, os eventos KeyDown e KeyPress ocorrem, mas o evento KeyUp não ocorre.

Exemplo

O exemplo a seguir determina se você pressionou a tecla Shift, Ctrl ou Alt.

Para tentar o exemplo, adicione o procedimento de evento a seguir a um formulário que contém uma caixa de texto chamada 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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.