即効テクニック |
マルチページに配置された複数のテキストボックスの入力状況をチェックして、入力されていなかった場合は、「ここです」という文字列をセットしてフォーカスを移動させます。 マルチページは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プロパティを使って、セットした「ここです」という文字列が選択された状態にしています。