Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18197 / 76732 ←次へ | 前へ→

【63978】Re:テキストボックスのExitが処理されません
発言  Yuki  - 10/1/7(木) 11:56 -

引用なし
パスワード
   ▼ビギナー さん:
こんにちは。

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
2 hits

【63974】テキストボックスのExitが処理されません ビギナー 10/1/6(水) 11:07 質問
【63975】Re:テキストボックスのExitが処理されません UO3 10/1/6(水) 12:27 回答
【63976】Re:テキストボックスのExitが処理されません neptune 10/1/6(水) 13:49 発言
【63977】Re:テキストボックスのExitが処理されません 角田 10/1/6(水) 17:35 回答
【63978】Re:テキストボックスのExitが処理されません Yuki 10/1/7(木) 11:56 発言
【64033】Re:テキストボックスのExitが処理されません ビギナー 10/1/11(月) 10:26 お礼

18197 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free