教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】フォーム内コントロールのタブオーダーを設定する方法を教えて!

構文

構文は以下の通りです。

UserForm.SetDefaultTabOrder

解説

タブオーダーを設定するには、SetDefaultTabOrderメソッドを使用します。このメソッドは、UserFormオブジェクトで提供されており、UserForm内コントロールのタブオーダーをデフォルト順序で設定する際に使用されます。UserFormは、タブオーダーを設定したいユーザーフォームのオブジェクト名を指定します。例えば、フォームの名前が"MyForm"の場合、"MyForm.SetDefaultTabOrder"となります。SetDefaultTabOrderは、ユーザーフォーム内のコントロールのタブオーダーをデフォルトの順序で設定するためのメソッドとなります。

使い方

具体的な使い方について紹介します。

Private Sub UserForm_Activate()
    Me.SetDefaultTabOrder
End Sub

このコードは、ユーザーフォームがアクティブになるたびにSetDefaultTabOrderメソッドを呼び出すことを意味しています。これにより、コントロールの追加順に基づいたデフォルトのタブオーダーが設定されます。

プログラミング例

以下に、プログラミング例を幾つか紹介します。

例1:カスタムなタブオーダー

Private Sub UserForm_Activate()
    Me.TabOrder = Array(TextBox1, Button1, CheckBox1, TextBox2)
    Me.SetTabOrder Me.TabOrder
End Sub

この例では、ユーザーフォーム内のコントロールの順序を配列に指定し、それを使用してタブオーダーを設定しています。ここでは、TextBox1、Button1、CheckBox1、TextBox2の順番でタブキーを押すとフォーカスが移動します。

例2:グループ化してタブオーダーを設定

Private Sub UserForm_Activate()
    Dim Group1 As Variant, Group2 As Variant
    Group1 = Array(TextBox1, Button1)
    Group2 = Array(CheckBox1, TextBox2)
    Me.TabOrder = Array(Group1, Group2)
    Me.SetTabOrder Me.TabOrder
End Sub

この例では、TextBox1とButton1が一つのグループに、CheckBox1とTextBox2が別のグループになります。フォーム内でグループごとにタブキーを押すと、グループ内のコントロール間でフォーカスが移動します。

まとめ

フォーム内コントロールのタブオーダーを設定するには、SetDefaultTabOrderメソッドを使用します。コントロールの追加順に基づいたデフォルトのタブオーダーが簡単に設定できますので、是非活用してください。