ネットが遅くてイライラしてない!?

いつもお世話になっております
下記のコードのやり方おしえてくれませんでしょうか
TextBox1にもじを入力してエンターを
押したら TextBox2おなじく文字を入力したら
TextBox3とい感じで移動したいのです。
まちがっている箇所おしえてくれませんでしょうか

Private Sub TextBox1_Enter()
TextBox2.SetFocus
End Sub
Private Sub TextBox2_Enter()
TextBox3.SetFocus
End Sub

「vba set Focus」の質問画像

A 回答 (5件)

こんばんは、


すでに回答にあるように、通常?、ご質問の場合だとTabIndexであらかじめ設定しておけば良いと思います。

しかし、何だかの事情でTextBoxでEnterキーを押して次の任意オブジェクトにFocusを当てないなら
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.SetFocus
End Sub

Exitイベントに書くのはどうでしょう。

同じコードで設定するにも、やっぱり初めに設定するほうが良いかも
Private Sub UserForm_Initialize()
Dim i As Integer
  For i = 1 To 3
    Me.Controls("TextBox" & i).TabIndex = i
  Next
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2020/06/28 18:13

No.1・2です。



投稿後思ったのですが、
Qchan1962さんも書かれている通りだと思います。

ユーザーフォームを立ち上げた時点でTabIndexが「0」のところがSetFocusされます。
(TabIndexが「0」以外の部分を入力可能にしたい場合はもちろんSetFocusは使います)

SetFocusの一般的な使い方としては、ユーザーフォームを閉じずにそのまま続けて次のデータ入力!といった場合にが多いと思います。

コマンドボタン等ですべてのテキストボックス(他のオブジェクトの操作も含む)を
Sheet上に転記 → 各テキストボックスをクリア → テキストボックス1を「SetFocus」
といった感じでしょうか。

※ あくまで当方はそういう使い方をしている!というだけなので
参考程度で・・・m(_ _)m
    • good
    • 0

#3です。


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2.SetFocus
は、少し乱暴なので、補足します。
ExitイベントにSetFocusを書くと他のコントロールオブジェクトをクリックで選択しても
TextBox1にフォーカスがある場合TextBox2にファーカスが移動します。

私の認識では、SetFocusの使いどころは、未入力チェックやエラーチェックで入力または選択してほしい
コントロールにフォーカスを移す場合によく使われます。

従って実行コード内では見かけるのですが、単純に次のコントロールへ移動する為に使われる事は少ないと思います。
    • good
    • 0

No.1です。



前回の投稿で誤記がありました。
直截 → 直接 です。

どうも失礼しました。m(_ _)m
    • good
    • 0

こんばんは!



直截の回答ではありませんが・・・
各テキストボックスのプロパティの「TabIndex」を確認してみてください。

同じユーザーフォーム内にあれば
0 → 1 → 2 ・・・のように「TabIndex」順に選択されますので、
別にコード云々で操作する必要はないと思います。

※ 他のオブジェクトも一緒で、すべてこの「TabIndex」によって順番は決まります。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング