テキストボックスの日本語入力方式(IME)を設定する(IMEModeプロパティ)

ユーザーフォームに設置したテキストボックスやコンボボックスにフォーカスが移ったときに日本語入力方式(IME)をどのようなモードでオンにするのかを設定するには IMEMode プロパティを使用します。ここでは Excel のユーザーフォームで IMEMode プロパティを使ってテキストボックスの日本語入力方式(IME)を設定する方法について解説します。

(Last modified: )

日本語入力方式を設定する

テキストボックスなどのコントロールにフォーカスが移ったときに、 IME をオンにするかどうか、またどのモードで IME をオンにするのかを設定するには IMEMode プロパティを使用します。デフォルトでは IMEMode の値は fmIMEModeNoControl となっており、 IME の状態を変化させません(フォーカスが移る前の状態のままで変化させません)。

日本語入力方式を設定する(1)

設定可能な値には次の種類があります。

定数説明
fmIMEModeNoControl0IME を制御しない
fmIMEModeOn1IMEをオンにする
fmIMEModeOff2IMEをオフにする(英語モード)
fmIMEModeDisable3IMEをオフにする(キーボードでIMEをオンにできない)
fmIMEModeHiragana4全角ひらがなモードでIMEをオンにする
fmIMEModeKatakana5全角カタカナモードでIMEをオンにする
fmIMEModeKatakanaHalf6半角カタカナモードでIMEをオンにする
fmIMEModeAlphaFull7全角英数字モードでIMEをオンにする
fmIMEModeAlpha8半角英数字モードでIMEをオンにする
fmIMEModeHangulFull9全角ハングルモードでIMEをオンにする
fmIMEModeHangul10半角ハングルモードでIMEをオンにする

コントロールに対する IME の設定を変更するには IMEMode プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし設定する項目をクリックしてください。

日本語入力方式を設定する(2)

例えばテキストボックスの IMEMode プロパティに fmIMEModeKatakana を設定し、全角カタカナモードで IME をオンにするように設定してみます。

日本語入力方式を設定する(3)

ユーザーフォームを実際に表示して先ほど設定を行ったテキストボックスにフォーカスを移してみると、 IME が全角カタカナモードに変更されているのが確認できます。

日本語入力方式を設定する(4)

日本語入力方式を設定する(5)

このように IMEMode プロパティの値を変更することで、コントロールにフォーカスを移したときに IME をどのモードで起動するのかを設定することができます。

VBAのプログラムの中でIMEModeプロパティを設定する

プロパティウィンドウを使って IMEMode プロパティの値を変更する代わりに、 VBA のコードを記述して IMEMode プロパティの値を変更することもできます。

プログラムの中で IMEMode プロパティを設定する場合は次の書式を使用します。

オブジェクト.IMEMode [= fmIMEMode ]

対象のオブジェクトの IMEMode プロパティに対してプロパティに対して IME のモードを表す値を代入します。代入可能な値はこのページの最初の方に記載してありますので参照されてください。

例えばコントロールにフォーカスが移ったときに IME をオフにされたい場合は fmIMEModeOff を設定してください。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で IMEMode プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でIMEModeプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でIMEModeプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャ使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。テキストボックスには IME を「全角英数字モード」でオンにし、コンボボックスには IME をオフにするように設定しています。

Private Sub UserForm_Initialize()
    TextBox1.IMEMode = fmIMEModeAlphaFull
    ComboBox1.IMEMode = fmIMEModeOff
End Sub

VBAのプログラムの中でIMEModeプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でIMEModeプロパティを設定する(4)

ユーザーフォームが表示されました。テキストボックスにフォーカスがある場合は IMEMode プロパティの値が fmIMEModeAlphaFull に設定されているので IME が「全角英数字モード」になっています。

VBAのプログラムの中でIMEModeプロパティを設定する(5)

VBAのプログラムの中でIMEModeプロパティを設定する(6)

コンボボックスにフォーカスがある場合は IMEMode プロパティの値が fmIMEModeOff に設定されているので IME がオフになり英語モード(半角英数)になっています。

VBAのプログラムの中でIMEModeプロパティを設定する(5)

VBAのプログラムの中でIMEModeプロパティを設定する(6)

このように VBA のプログラムの中で IMEMode プロパティの値を変更することができました。

-- --

Excel のユーザーフォームで IMEMode プロパティを使ってテキストボックスの日本語入力方式(IME)を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。