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