Access 2007でNumLockが消える問題を解決

仕事で使っているVistaAccess 2007のシステムで、使用中にいつの間にかNumLockがオフになってしまうという問題が起きました。次のような動作のときにNumLockがオフになります。

  1. あるフィールドの更新後処理(AfterUpdateイベント)にSendKeysを使った処理が入っている
  2. 入力後、Enterキーを入力してフィールドを移動する
  3. 次のフィールドの更新後処理にも同様の処理が入っている
  4. 入力後、Enterキーを入力してフィールドを移動する

ネットで調べたところ、VBAVB)に、SendKeysの動作中に他のSendKeysが動作するとNumLockがオフになるバグがあることがわかりました。

そこで、SendKeysを別のコードに書き換えることにしました。

更新後処理は次のようなコードでした。Shift+Enterを入力することで、レコードを保存しています。

SendKeys "+{ENTER}"

これを次のようなコードに書き換えました。

DoCmd.RunCommand acCmdSaveRecord

これで使用中にNumLockがオフにならないようになりました。

まとめると

  1. Access 2007でNumLockがオフになる問題が発生
  2. VBAVB)のバグが原因
  3. SendKeysを他のコマンドに変更することで解決できた