> If Keyboard.Async.ShiftKey Then

Das ist eigentlich nicht die richtige Funktion. Korrekt wäre die
nicht-Async-Version, denn die Async gibt dir den Zustand zum Zeitpunkt
der Abfrage, die nicht-Async den Zustand zum Zeitpunkt, als der Event
(Keydown) _ausgelöst_ wurde. Wenn man nun ein etwas langsames System
hat, und einen schnellen Schreiber, will man ja wissen, ob er Return
oder Shift+Return drückte, und nicht, ob seitdem er Return drückte,
nun gerade die Shift-Taste gedrückt ist.

Klar?

Antwort per Email an