ExcelのShiftにまつわる特殊処理

またまたExcelVBAのお話です。
そして今回は、「誰がこんな情報必要になるんじゃ」というくらいマイナーすぎるお話です。


「Shift+P」をユーザーが押したら、keybd_eventでキーを飛ばして「形式を選択して貼り付け」ダイアログを出したかったんですよ。
最初はkeybd_eventで「Alt+E」→「S」でやったんですけど……どうも、「Alt+E」でこけてる様子。
原因を調べてみると、「Shift+Alt+E」で、「編集」の裏メニューが起動してました。
Shiftは事前にkeybd_eventでKeyUpしておいたんですけど、ここはどうやらExcelが特殊処理をしていて、システム上のキー状態でなく、実際のキー状態で判定しているようです。


これと同様に「Shift+F10」(右クリックやアプリケーションキーと同じ動作)のShiftも実際のキー状態での判定になってるようです。
そりゃ、keybd_eventでShift飛ばしても上手くいかないわけだ……。
keybd_eventでShiftを制御しようとしてる方は要注意ですよ〜。なんか、他にも特殊処理ありそう……。


あ、結局、keybd_eventで「アプリケーションキー」→「s」で対処しました。