HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ユーザーフォーム入門 - 住所入力フォームを作成する(3) 〜 入力順序とIMEの設定

ユーザーフォーム入門 - 住所入力フォームを作成する(3) 〜 入力順序とIMEの設定|Excel VBA

ユーザーフォーム関連のテクニック

ユーザーフォーム入門 - 住所入力フォームを作成する(3) 〜 入力順序とIMEの設定

(Excel 2000/2002/2003/2007/2010/2013/2016)

ユーザーフォーム入門 - 住所入力フォームを作成する(2) 〜 コントロールの配置」の手順でユーザーフォームの外見を作成したら、各テキストボックスの入力順序やIMEの設定をしていきましょう。

■入力順序

まず、現在の設定状況を確認しましょう。次の手順で操作してください。

  1. [F5]キーを押して、ユーザーフォームを実行する
  2. ユーザーフォームの一番上のテキストボックス([会社名]テキストボックス)に文字列を入力して[Tab]キーを押す

この手順を繰り返してみてください。
カーソルが順に1つ下のテキストボックスに移り、[担当者]まで移動します。続いて、コマンドボタンが順に選択された状態になり、ぐるっと1周して再び[会社名]テキストボックスにカーソルが戻ってきたでしょうか?
意図した順序で移動しない場合は、この順序を変更できます。

ここでは、[会社名]から[担当者]まで、テキストボックスに文字列を入力して[Tab]キー、または[Enter]キーを押したら次のテキストボックスにカーソルを移動させます。
ただし、[会社名よみ]テキストボックスへはカーソルを移動させず、[会社名]テキストボックスに入力された値からふり仮名を取得するよう、入力順序(フォーカス移動順序)の対象外としておきましょう。(移動順序からはずすだけです。入力不可にするわけではありません)
コマンドボタンについても、誤って登録してしまうのを避けるため、タブ移動順序の対象外とします。

<タブの移動対象の設定>
マウスのクリックやキーボード入力ができる状態を "フォーカスを持つ"といいます。
[Tab]キーを使ってフォーカスを移動するとき、コントロールがフォーカスを取得できるかどうかは、TabStopプロパティで設定します。

次のように操作して、[会社名よみ]テキストボックスとコマンドボタンにフォーカスが移動しないように設定します。

  1. 実行中のユーザーフォーム右上の[×]ボタンをクリックし、デザインモードに戻す
  2. [会社名よみ]テキストボックスを選択する
    ※プロパティウィンドウでは[txtYomi]が選択される
  3. プロパティウィンドウで[TabStop]をクリックして設定値を「False」にし、タブの移動対象から外す
  4. [登録][終了][読み]ボタンについても同様に、TabStopプロパティを「False」にする
    ※デザインモードのユーザーフォームで、対象のコマンドボタン3つを選択しておき、一括してプロパティを設定するとよい

<タブの移動順序の設定>
フォーカスの移動順序はTabIndexプロパティで設定します。
プロパティウィンドウでTabIndexプロパティに数値を設定することもできますが、ここでは[タブ オーダー]ダイアログボックスを使用しましょう。
TabStopプロパティがTrueのコントロールのうち、どの順にフォーカスを移動させるかをダイアログボックス内の順序で設定します。

  1. ユーザーフォーム上で右クリック→[タブ オーダー]を選択し、[タブ オーダー]ダイアログボックスを表示する
  2. [上に移動]、[下に移動]ボタンを使ってテキストボックスを入力する順に設定する。
    ※複数選択、一括移動も可能

■IMEの設定

「電話番号」や「E-mail」は常に半角英数モードで入力する項目です。これらの入力時は、わざわざIMEを切り替えなくて済むようにしたいものです。
また、「会社名よみ」はカタカナ入力、その他の項目は必ずIMEがオンの状態になっていると、入力時に余計な動作が不要になります。
このような設定はIMEModeプロパティで設定します。

プロパティウィンドウで各コントロールのIMEModeプロパティに次のように設定してください。複数のコントロールに同じ値を設定する場合は、ユーザーフォーム上で対象のコントロールを選択し、プロパティウィンドウで一括して登録するとよいでしょう。

すべての操作を行ったら、ユーザーフォームを実行してみましょう。
テキストボックスの入力テストを行い、タブオーダーとIMEの指定が有効になっていることを確認してください。

次回は、ユーザーフォームに入力したデータの出力先となるブックを開き、ワークシートに転記する処理を実装していきましょう。

●補足●

ユーザーフォーム上で複数のコントロールを選択する際、[Ctrl]キーを押しながらクリックするのは、数が多いと面倒ですね。その場合は、ドラッグして選択するよいでしょう。
次のように、対象のコントロールが含まれるようにドラッグすると、複数のコントロールをまとめて選択できます。