ExcelにVBA Userformがあります。これには6つのテキストボックスがあり、TabStopをTrueに設定したUserformの唯一のコントロールです。Excel VBA - UserForm Textboxにフォーカスを設定できません
テキストボックスをタブで移動しても問題なく移動できます。私はSetFocus
をTextbox間を移動するときに起動するイベントで動作させることはできません。私はCommandButtonをUserform16.Textbox1.Setfocus
でuserformに配置することができ、期待どおりに動作し、Textbox1にフォーカスを移動します。
TextBox2が入力されているときに、TextBox1をTextBox1に戻すように単純なテストイベントを設定しました(下記参照)、TextBox1からタブアウトしたときに実際にフォーカスがTextbox3に移動します。
Private Sub TextBox2_Enter()
Cancel = True
UserForm16.TextBox1.SetFocus
End Sub
上記で
Stop
を置くことによって、私は予想通り、イベントが発火していることがわかりますが、それは私が焦点に次のコントロールを制御することはできません。
サブ内のCancel = True
ステートメントの有無にかかわらず同じ結果が得られます。
あなたは頭を壁に打ちつけることによって学びます。ノッキングとグーグルの日の後、私はより高いプログラミング知性に夢中になります。
スタン
放棄する前に 'TextBox1'のデータを検証するのが目的ならば、' Cancel = True'を設定することで 'TextBox1_Exit'の代わりにそれを扱いませんか? –
Cancel = Trueは、イベントの引数ではないため、何の効果もありません。私は、Enterイベントで行われたときにフォーカスを変更することができないということを思い出しているので、代わりに別のイベントを試してみることをお勧めします。 – jkpieterse
私がやろうとしているのは、次のテキストボックスに行くときにテキストボックス内の日付を検証することですが、失敗した場合は元のテキストボックスにフォーカスを戻し、そのテキストボックス内のデータをハイライト表示するようにします。上記のように、Cancel = Trueの元のテキストボックスにフォーカスを合わせることはできますが、このテキストボックスが選択されていることをユーザーに知らせることはできません。ありがとう。 – Stan