カーソルフォーカスはVBAではイベントではないため、やりにくいです。 BUT_Change
イベントを使用し、最後に変更したTextbox
を覚えておいてください。
最後に変更されたTextBoxの名前には、モジュール内にパブリック変数が必要です。したがって、次回にフォームがアクティブになったときは、簡単なselect case
を使用して、フォームの対応する名前に.SetFocus
を使用することができます。以下のコードは2つのテキストボックスで動作します。
形式では:モジュールで
Option Explicit
Private Sub TextBox1_Change()
strLastTb = "TextBox1"
End Sub
Private Sub TextBox2_Change()
strLastTb = "TextBox2"
End Sub
Private Sub UserForm_Activate()
Select Case strLastTb
Case "TextBox1"
TextBox1.SetFocus
Case "TextBox2"
TextBox2.SetFocus
End Select
End Sub
:一般的に
Option Explicit
Public strLastTb As String
、あなたがTextBox&Digit
を連結する関数を作成することができ、そうあなた場合は、数百行を記述する必要はありません50 TextBoxes
があります。そしてそれはより良く見えるだろう。
現在クリックされているテキストボックスに集中したいですか? –
私はこれを簡単に行う方法はないと考えています。フォーカスを正しいコントロールに戻すために必要なGotFocusイベントはありません。 APIへのディップとSetwindowHooksEx + HCBT_ACTIVATEの使用は、おそらく1つの方法でしょう。 –