El problema es que ese evento se da solo cuando el form tiene el foco y el foco lo tienes solo cuando no tiene controles dentro de el que le quiten el foco así que por decirlo asi es un poco "inutil" mejor usa la API GetAscynKeyState es mucho mejor sino sabes usarla aqui te explico un poco:
Con un Timer de un interval de mas o menos 250 milisegundos colocas:
Código vb:
Ver originalIf GetAscyKeyState(Asc("a")) = -32767 Then
''Lo que pasa si se presiona la letra "a"
End If
El Asc transforma una letra a su cod ASCII que se lo pasamos como paremetro al API para revisar si la tecla esta siendo pulsada si es asi devuelve -32767;
Lo unico que faltaria agregarle es otro If que diga si nuestra aplicación tiene el foco entonces, ya que GetAscyKeyState toma todas las pulsaciones del teclado asi nuestra aplicacion no tenga foco ...Eso te lo dejo a ti...

Espero que te haya servido.