El argumento keycode identifica una clave y la asocia con el valor ASCII o mediante la constante del keycode. Los keycode son los mismos que los de los códigos ASCII de la mayúscula de la letra. Así que, por ejemplos, el keycode para B y b es el valor devuelto por B.
Cabe resaltar que el número 1 presionado en el teclado númerico y el teclado normal indican claves diferentes a pesar de que ambas generen el mismo símbolo, es decir, “1”.
Para determinar si el formulario en mayúsculas o minúsculas ha sido presionado se necesita utilizar el argumento Shift. El número de keycode tanto de teclas como para signos de puntuación son los mismos que el código ASCII del número en la clave.
Así que, por ejemplo, la clave para ambos 1 y ! es el valor devuelto por Asc("1”).
KeyDown y KeyUp
Otro de los eventos más utilizados son KeyDown y KeyUp, con ellos se puede identificar la mayoría de las teclas de control en un teclado estándar. Esto incluye las teclas de función (F1-F16), las teclas de edición las teclas de navegación y el teclado. KeyDown esta asociado a presionar una tecla y KeyUp cuando se deja la tecla.
Un ejemplo del uso del KeyDown para determinar si se digito la tecla B:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyA Then MsgBox "Presionaste la tecla B”
End Sub
Estas claves se puede probar mediante el código clave constante o el equivalente valor ASCII.
Lista de constantes (Keycode en VBA)
Para saber el valor de las teclas, conocidas también como Key Code Constants, se puede presionar la tecla F2 en el Editor de Visual Basic y buscar las constantes de KeyCode.
Los keycode en Visual Basic permiten tener control sobre todas las posibles situaciones, cada uno de ellos tiene su respectiva utilidad.
Ejemplos
Un último ejemplo sería el siguiente:
(Para mayor visualización de la imagen, hacer click en la misma)
26/10/2021 a las 12:06 am
Si el foco está en un comandbutton, la tecla flecha a la derecha pasa al foco al comandbutton que está a la derecha. ¿Es posible, estando el foco en un comandbutton, usar la combinación control más flecha a la derecha para activar una macro?