|
▼山ちゃん さん:
こんにちは
ichinose さんではありませんが。
>そもそも、こんなまどろっこしい手法に至ったのは、InputBox関数自体にIMEを制御する機能がないからなのです。
なら、ご自分の好みのinputboxをuserformで自作する事をお勧めします。
sendkeyは動作を保障されたコマンドではないので100%を求めるのはそもそも
酷と思います。ActiveなWindowに送るコマンドですから。
>一番大きな疑問はこれなんです。私のコードでどこかにブレークポイントを設定し、そこからステップ毎に動かすと思い通りの結果が得られるのです。
>私のコードでうまく行かないのはオープン当初だけで、後には全て思い通りに行くのです。
自信は無いですが、IMEってのは現在ActiveなWindowに対して制御されるため
の挙動ではないでしょうか?コンパイル時の挙動と、コンパイル後の挙動では
違ってきても不思議ではないと思います。
>
>まるっきしサラにして、InputBox関数のIMEを制御するような手法を出して頂けたら。
InputBox関数の仕様としてIME操作の機能を持ってないのですから、
100%を求めるとなると、やはりmessageをフックするとかの手法になるかと
思います。
が、ExcelVBAではサブクラスという手法そのものが実用に耐えません。
・・・理由は割愛します。
(InputBox関数で出来るかどうかは試した事ありませんので可不可は判りません)
最初に書いたようにUserFormで自作するのが一番楽チン簡単と思います。
参考
プラットフォーム SDK
Input Method Editor (IME)
ht tp://msdn.microsoft.com/ja-jp/library/cc422019.aspx
[XL95]日本語入力システムのオン/オフを制御する方法
ht tp://support.microsoft.com/kb/407890/ja
|
|