ユーザーフォーム入門 - 住所入力フォームを作成する(3) 〜 入力順序とIMEの設定|Excel VBA |
「ユーザーフォーム入門 - 住所入力フォームを作成する(2) 〜 コントロールの配置」の手順でユーザーフォームの外見を作成したら、各テキストボックスの入力順序やIMEの設定をしていきましょう。
まず、現在の設定状況を確認しましょう。次の手順で操作してください。
この手順を繰り返してみてください。
カーソルが順に1つ下のテキストボックスに移り、[担当者]まで移動します。続いて、コマンドボタンが順に選択された状態になり、ぐるっと1周して再び[会社名]テキストボックスにカーソルが戻ってきたでしょうか?
意図した順序で移動しない場合は、この順序を変更できます。
ここでは、[会社名]から[担当者]まで、テキストボックスに文字列を入力して[Tab]キー、または[Enter]キーを押したら次のテキストボックスにカーソルを移動させます。
ただし、[会社名よみ]テキストボックスへはカーソルを移動させず、[会社名]テキストボックスに入力された値からふり仮名を取得するよう、入力順序(フォーカス移動順序)の対象外としておきましょう。(移動順序からはずすだけです。入力不可にするわけではありません)
コマンドボタンについても、誤って登録してしまうのを避けるため、タブ移動順序の対象外とします。
<タブの移動対象の設定>
マウスのクリックやキーボード入力ができる状態を "フォーカスを持つ"といいます。
[Tab]キーを使ってフォーカスを移動するとき、コントロールがフォーカスを取得できるかどうかは、TabStopプロパティで設定します。
次のように操作して、[会社名よみ]テキストボックスとコマンドボタンにフォーカスが移動しないように設定します。
<タブの移動順序の設定>
フォーカスの移動順序はTabIndexプロパティで設定します。
プロパティウィンドウでTabIndexプロパティに数値を設定することもできますが、ここでは[タブ オーダー]ダイアログボックスを使用しましょう。
TabStopプロパティがTrueのコントロールのうち、どの順にフォーカスを移動させるかをダイアログボックス内の順序で設定します。
「電話番号」や「E-mail」は常に半角英数モードで入力する項目です。これらの入力時は、わざわざIMEを切り替えなくて済むようにしたいものです。
また、「会社名よみ」はカタカナ入力、その他の項目は必ずIMEがオンの状態になっていると、入力時に余計な動作が不要になります。
このような設定はIMEModeプロパティで設定します。
プロパティウィンドウで各コントロールのIMEModeプロパティに次のように設定してください。複数のコントロールに同じ値を設定する場合は、ユーザーフォーム上で対象のコントロールを選択し、プロパティウィンドウで一括して登録するとよいでしょう。
すべての操作を行ったら、ユーザーフォームを実行してみましょう。
テキストボックスの入力テストを行い、タブオーダーとIMEの指定が有効になっていることを確認してください。
次回は、ユーザーフォームに入力したデータの出力先となるブックを開き、ワークシートに転記する処理を実装していきましょう。
ユーザーフォーム上で複数のコントロールを選択する際、[Ctrl]キーを押しながらクリックするのは、数が多いと面倒ですね。その場合は、ドラッグして選択するよいでしょう。
次のように、対象のコントロールが含まれるようにドラッグすると、複数のコントロールをまとめて選択できます。