ExcelVBA KeyDownを投げるときはPostMessageを

keybd_eventの実行タイミングで惨敗(昨日の日記参照)したので、望み薄でしたがSendMessageに書き換えてみようかと試みました。
そしたら……もー大苦戦。
いろいろ試しても上手くいかなくて、ちゃんとメッセージが飛んでるけど何も実行されないという不思議な現象に。
2,3時間の格闘の末にたどり着いたのは……SendMessageじゃKeyDounは飛ばせないのかな?ということ。
SendMessageをPostMessageに書き換えたら、すんなり動きましたよ……。
お陰で初めてSpy++とか使いましたわ〜、


PostMessageで動きましたが……結果はkeybd_eventと一緒ですね。
DoEventsを挟めば、Undoはできなくなるけど正常に動作って感じです。
PostMessageはメッセージを投げるだけしてすぐにマクロの処理に戻るけど、SendMessageなら処理が実行されるまでマクロには戻ってこない。というのをどこかで見て、SendMessageに期待してたんですけど……SendMessageはそもそも動かないんですね;;
もーその線は諦めます。