テキストボックスの日本語入力方式(IME)を設定する(IMEModeプロパティ)
ユーザーフォームに設置したテキストボックスやコンボボックスにフォーカスが移ったときに日本語入力方式(IME)をどのようなモードでオンにするのかを設定するには IMEMode プロパティを使用します。ここでは Excel のユーザーフォームで IMEMode プロパティを使ってテキストボックスの日本語入力方式(IME)を設定する方法について解説します。
(Last modified: )
日本語入力方式を設定する
テキストボックスなどのコントロールにフォーカスが移ったときに、 IME をオンにするかどうか、またどのモードで IME をオンにするのかを設定するには IMEMode プロパティを使用します。デフォルトでは IMEMode の値は fmIMEModeNoControl となっており、 IME の状態を変化させません(フォーカスが移る前の状態のままで変化させません)。
設定可能な値には次の種類があります。
| 定数 | 値 | 説明 |
|---|---|---|
| fmIMEModeNoControl | 0 | IME を制御しない |
| fmIMEModeOn | 1 | IMEをオンにする |
| fmIMEModeOff | 2 | IMEをオフにする(英語モード) |
| fmIMEModeDisable | 3 | IMEをオフにする(キーボードでIMEをオンにできない) |
| fmIMEModeHiragana | 4 | 全角ひらがなモードでIMEをオンにする |
| fmIMEModeKatakana | 5 | 全角カタカナモードでIMEをオンにする |
| fmIMEModeKatakanaHalf | 6 | 半角カタカナモードでIMEをオンにする |
| fmIMEModeAlphaFull | 7 | 全角英数字モードでIMEをオンにする |
| fmIMEModeAlpha | 8 | 半角英数字モードでIMEをオンにする |
| fmIMEModeHangulFull | 9 | 全角ハングルモードでIMEをオンにする |
| fmIMEModeHangul | 10 | 半角ハングルモードでIMEをオンにする |
コントロールに対する IME の設定を変更するには IMEMode プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。
例えばテキストボックスの IMEMode プロパティに fmIMEModeKatakana を設定し、全角カタカナモードで IME をオンにするように設定してみます。
ユーザーフォームを実際に表示して先ほど設定を行ったテキストボックスにフォーカスを移してみると、 IME が全角カタカナモードに変更されているのが確認できます。
このように IMEMode プロパティの値を変更することで、コントロールにフォーカスを移したときに IME をどのモードで起動するのかを設定することができます。
VBAのプログラムの中でIMEModeプロパティを設定する
プロパティウィンドウを使って IMEMode プロパティの値を変更する代わりに、 VBA のコードを記述して IMEMode プロパティの値を変更することもできます。
プログラムの中で IMEMode プロパティを設定する場合は次の書式を使用します。
オブジェクト.IMEMode [= fmIMEMode ]
対象のオブジェクトの IMEMode プロパティに対してプロパティに対して IME のモードを表す値を代入します。代入可能な値はこのページの最初の方に記載してありますので参照されてください。
例えばコントロールにフォーカスが移ったときに IME をオフにされたい場合は fmIMEModeOff を設定してください。
簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で IMEMode プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。
※ Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。
ユーザーフォームのコントロールが何もないところをダブルクリックしてください。
ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。
今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。テキストボックスには IME を「全角英数字モード」でオンにし、コンボボックスには IME をオフにするように設定しています。
Private Sub UserForm_Initialize()
TextBox1.IMEMode = fmIMEModeAlphaFull
ComboBox1.IMEMode = fmIMEModeOff
End Sub
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。テキストボックスにフォーカスがある場合は IMEMode プロパティの値が fmIMEModeAlphaFull に設定されているので IME が「全角英数字モード」になっています。
コンボボックスにフォーカスがある場合は IMEMode プロパティの値が fmIMEModeOff に設定されているので IME がオフになり英語モード(半角英数)になっています。
このように VBA のプログラムの中で IMEMode プロパティの値を変更することができました。
-- --
Excel のユーザーフォームで IMEMode プロパティを使ってテキストボックスの日本語入力方式(IME)を設定する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。