|
▼ビギナー さん:
こんにちは。
UserForm1上に
Frameを貼付けその中にTextBoxを3個
そしてダミーのTextBoxを1個 これは別のTextBoxの下に隠して置いてください。
そのFrameの外側にCommandButton1個とTextBox1個があるものとします。
動きはFrameから外れる時にダミーのTextBoxで最後にアクセスしたTextBoxの
Exitイベントを確定することです。
一度試してみて下さい。
Object Object Name Tab Index
Frame Frame1 0
TextBox TextBox1 0
TextBox2 1
TextBox3 2
TextBox TextBox4 3 これはダミー
別のTextBoxの下に隠して置いてください。
CommandButton CommandButton1 1
TextBox TextBox5 2
フォームモジュール上に
Option Explicit
Dim PreCntl As String
'************* Frame 内 Start ******************
Private Sub Frame1_Enter()
PreCntl = ""
End Sub
Private Sub Frame1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox4.SetFocus
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox5.Value = "1111" '動作確認の為
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox5.Value = "2222"
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox5.Value = "3333"
End Sub
最後のTextBoxの時Tab及びEnterを押した時
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Or KeyCode = 13 Then
PreCntl = Me.CommandButton1.Name
End If
End Sub
ダミーのTextBoxの処理 此処でFrameから外れる前に
手前のTextBoxのExitの処理を行う為
Private Sub TextBox4_Enter()
Application.OnTime Now, "'ctlSetFocus """ & PreCntl & """'"
End Sub
'************* Frame 内 End ******************
Frameの外のコントロールへのフォーカス EnterイベントでctlFocusを呼ぶ
Private Sub CommandButton1_Enter()
ctlFocus ’Frame から直にクリックされた時用
End Sub
Private Sub TextBox5_Enter()
ctlFocus ’Frame から直にクリックされた時用
End Sub
コントロールへのSetFocus
Private Sub ctlFocus()
If PreCntl = "" Then
PreCntl = Me.ActiveControl.Name
Application.OnTime Now, "'ctlSetFocus """ & PreCntl & """'"
End If
End Sub
標準モジュールにOnTime用
コントロールへのSetFocus
Sub ctlSetFocus(ctlNm As String)
If ctlNm = "" Then Exit Sub
With UserForm1
.Controls(ctlNm).SetFocus
End With
End Sub
|
|