No.006
InputBox のテキスト ボックス入力時に日本語入力をオンにする 《SendKeys》
2003/2007/2010/2013
InputBoxを起動するとき、特に何も処置しなければ、テキスト ボックスはそのときの日本語入力モードになります。
そこをいつでも日本語オンですぐに書けるようにする方法です。
InputBox起動前に、日本語入力をオンにすべく、1行次の記述を追加してみます。
SendKeys "{kanji}"
SendKeysステートメントは、アクティブなアプリケーションにキーコードを送信する、つまり、キーを押したときの動作を実行させることができるものです。
上記の1行は、「半角/全角」キーを押すというキー操作です。
しかし、日本語オンであったときに上記1行が実行されると、日本語オフとなってしまいますよね。
そこで、現在の日本語入力状態を確認してからSendKeysを送ることにします。
次のサンプルを参考にしてください。
Dim strInput As String
If IMEStatus = vbIMEModeOff Then SendKeys "{kanji}"
strInput = InputBox("お名前を入力してください。")
Msgbox strInput
使用したIMEStatus関数は、現在のIMEの状態を返します。
引数はありません。詳細は調べてみてください。
さて、SendKeysステートメントは大変重宝しますので、覚えておくといいですよ。
下の<ヘルプmemo>で詳細をご確認ください。
ヘルプmemo
<SendKeysステートメント>
キーストロークまたはキーストロークの組み合わせを、キーボードから入力したときと同様にアクティブ ウィンドウに渡します。
構文: SendKeys string[, wait]
引数:
string …送信するキーストロークを表す文字列式を指定
wait …待機モードを指定するブール型の値[省略可]
False(既定値) …キーが送信された直後にプロシージャに制御が戻される
True …キーストロークが処理されてからプロシージャに制御が戻される
ヒント:
SendKeysステートメントにおける、キーボードの各キーの指定は、次のとおりです。
BackSpace …{BACKSPACE}、{BS}、または {BKSP}
Ctrl + Break …{BREAK}
CapsLock …{CAPSLOCK}
Del または Delete …{DELETE} または {DEL}
↓ …{DOWN}
End …{END}
Enter …{ENTER} または {~}
Esc …{ESC}
Help …{HELP}
Home …{HOME}
Ins または Insert …{INSERT} または {INS}
← …{LEFT}
NumLock …{NUMLOCK}
PageDown …{PGDN}
PageUp …{PGUP}
PrintScreen …{PRTSC}
→ …{RIGHT}
ScrollLock …{SCROLLLOCK}
Tab …{TAB}
↑ …{UP}
F1 …{F1}
F2 …{F2}
F3 …{F3}
F4 …{F4}
F5 …{F5}
F6 …{F6}
F7 …{F7}
F8 …{F8}
F9 …{F9}
F10 …{F10}
F11 …{F11}
F12 …{F12}
F13 …{F13}
F14 …{F14}
F15 …{F15}
F16 …{F16}
Shift キー、Ctrl キー、または Alt キーと他のキーとの組み合わせを指定するには
通常のキー コードの前に次のコードを単独、または組み合わせて記述します。
Shift …+
Ctrl …^
Alt …%
Shiftキー、Ctrlキー、Altキーを押しながら他のキーを押す操作を指定するには
キーのコードをかっこで囲みます。
たとえば、Shiftキーを押しながら E と C を押す操作を指定するには
"+(EC)"
Shiftキーを押しながら Eを押し、Shiftキーを離して C を押す操作を指定するには
"+EC"
同じキー ストロークの繰り返しを指定するには、次の形式を使います。
{key number}
key と number の間には必ず半角のスペースが必要です。たとえば、
{LEFT 10}
の場合 ← キーを10回押すことを意味します。