テキストボックスに最大文字数を入力したあと自動的に次のコントロールに移動するか設定する(AutoTabプロパティ)

ユーザーフォームに設置したテキストボックスやコンボボックスに最大文字数が設定されている場合に、最大文字数分のテキストを入力すると自動的に次のコントロールにフォーカスを移動するかどうかを設定するには AutoTab プロパティを使用します。ここでは Excel のユーザーフォームで AutoTab プロパティを使ってテキストボックスに最大文字数を入力したあと自動的に次のコントロールに移動するか設定する方法について解説します。

(Last modified: )

最大文字数を入力したあと自動で移動するか設定する

テキストボックスまたはコンボボックスで最大文字数が設定されている場合に、最大文字数分のテキストを入力したときに自動的に次のコントロールにフォーカスを移動するか設定するには AutoTab プロパティを使用します。デフォルトでは AutoTab の値は「False」となっています。「False」の場合は自動では移動しません。

最大文字数を入力したあと自動で移動するか設定する(1)

※ テキストボックスなどに最大文字数を設定するには MaxLength プロパティを使用します。詳しくは「テキストボックスに入力できる最大文字数を設定する(MaxLengthプロパティ)」を参照されてください。

最大文字数を入力すると自動でフォーカスを移動するように設定するには Cancel プロパティの値のところに表示されているドロップダウンメニューをクリックし、「True」を選択してください。

最大文字数を入力したあと自動で移動するか設定する(2)

例えば 3 つのテキストボックスをそれぞれ最大文字数を 5 に設定し、 AutoTab プロパティも「True」に設定してみます。

最大文字数を入力したあと自動で移動するか設定する(3)

ユーザーフォームを表示し、最初のテキストに最大文字数の 5 文字分テキストを入力すると、自動的に次のテキストボックスにフォーカスが移動します。

最大文字数を入力したあと自動で移動するか設定する(4)

最大文字数を入力したあと自動で移動するか設定する(5)

郵便番号や電話番号など決められた文字数を入力したら自動的に次のコントロールへ移動させたい場合などに便利です。

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

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

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

オブジェクト.AutoTab [= Boolean ]

対象のオブジェクトの AutoTab プロパティに対して「True」を設定すると最大文字数分だけテキストを入力したときに次のコントロールへ自動でフォーカスが移動します。「False」を設定すると自動でフォーカスは移動しません。

サンプルコード

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

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

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

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

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

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

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

Private Sub UserForm_Initialize()
    TextBox1.MaxLength = 5
    TextBox2.MaxLength = 5
    TextBox3.MaxLength = 5

    TextBox1.AutoTab = True
    TextBox2.AutoTab = True
    TextBox3.AutoTab = True
End Sub

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

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

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

ユーザーフォームが表示されました。テキストボックスに文字を入力してみると、最大文字数に設定した 5 文字分テキストを入力すると自動的に次のコントロールへフォーカスが移動します。

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

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

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

-- --

Excel のユーザーフォームで AutoTab プロパティを使ってテキストボックスに最大文字数を入力したあと自動的に次のコントロールに移動するか設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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