マルチページの未入力テキストボックスへフォーカスを移動させる
 マルチページに配置された複数のテキストボックスの入力状況をチェックして、
入力されていなかった場合は、「ここです」という文字列をセットしてフォーカスを
移動させます。
 マルチページは2ページで、各ページにテキストボックス2個ずつと、1ページ目に
コマンドボタンを1つ配置します。
 テキストボックス名は「TextBox1」「TextBox2」「TextBox3」「TextBox4」です。
コマンドボタン名は「CommandButton1」です。
 フォームが開くときに発生するイベント「Initialize」に次のマクロを記述します。

Private Sub UserForm_Initialize()

    With cl_Box
      .Add Item:=TextBox1
      .Add Item:=TextBox2
      .Add Item:=TextBox3
      .Add Item:=TextBox4
    End With
    
End Sub

 コマンドボタンがクリックされた時に発生するイベントには、次のマクロを記述します。

Private Sub CommandButton1_Click()

    Dim c
    Dim i

    For i = 1 To 4
      If cl_Box(i) = "" Then
          If i < 3 Then
             With MultiPage1
                .page2.Enabled = False
                .page2.Enabled = True
             End With
          Else
             With MultiPage1
                .page1.Enabled = False
                .page2.Enabled = True
                .page1.Enabled = True
             End With
          End If
              MsgBox "入力されていない項目があります。" _
                & vbLf & vbLf & "確認して下さい..." _
                , vbOKOnly + vbExclamation, "注意"
           With cl_Box(i)
              .Text = "ここです"
              .SelStart = 0
              .SelLength = Len(cl_Box(i).Text)
              .SetFocus
           End With
        End If
    Next i
    
End Sub

 入力されていないコントロールを取得して、それがマルチページの1ページ目の
コントロールでなければ、1ページ目以外を一度FALSEにして1ページ目をカレントにし、
その後、再度FALSEにしたページを元に戻す。これを各ページごとに条件分岐させて、
未入力のテキストボックスに文字列をセットしてフォーカスを移動させています。
 SelLengthプロパティを使って、セットした「ここです」という文字列が選択された
状態にしています。

Excel97/2000



戻る


Excel Word Access VBA! モーグ