使用環境
- OS:Windows 10 Pro(バージョン:20H2)
- ソフト:Microsoft Excel VBA
経緯
VBAでユーザーフォームに複数のテキストボックスを作成し、
「Enter」キーで順番に次のテキストボックスへ移動する仕組みを作ろうとしました。
ところが、実際には全く意図しないテキストボックスにカーソルが移動してしまい、困った状況になりました。
そこで、テキストボックスを正しい順番で移動させる方法を調べ、実践しました。
タブオーダーを設定する方法
テキストボックスなど、コントロール間の移動順序は**「タブオーダー」**と呼ばれています。
このタブオーダーを正しく設定すれば、意図した順番でカーソル移動が可能になります。
手順
- VBAエディターを開きます。
- 該当するユーザーフォームをダブルクリックして開きます。
- メニューバーから**「表示」**タブをクリックします。
- メニューの下のほうにある**「タブオーダー」**を選択します。
- 現在のタブ順に並んだコントロール一覧が表示されます。
- テキストボックスなどをドラッグ、または「上へ」「下へ」のボタンで、移動したい順番に並び替えます。
- 設定が完了したら、保存して閉じます。
この設定を行うことで、「Enter」キーや「Tab」キーで順番通りにカーソルが移動するようになります。
本当は「矢印キー」で動かしたい
今回ご紹介したタブオーダーの設定により、「Enter」キーや「Tab」キーによる順番移動は実現できました。
ただ、私自身は**矢印キー(↑↓→←)**でカーソルを移動できるようにしたかったのですが、
現時点ではうまく実装できていません。
矢印キーでの移動は、KeyDownイベントやKeyPressイベントを使った高度な制御が必要なため、引き続き勉強を進めていく予定です。
まずは、タブオーダー設定でしっかり運用していこうと思います。
まとめ
VBAのユーザーフォームにおいて、テキストボックスの順番がおかしい場合は、
タブオーダーを設定し直すことで、正しく順番にカーソルが移動するようにできます。
一歩ずつ改善しながら、より快適なフォーム作成を目指していきましょう。
ここまでお読みいただき、誠にありがとうございました。