重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

初心の質問で申し訳ありませんが、困っていますので、回答をよろしくお願いいたします。
テキストボックス1、2、3をユーザーフォームに配置しています。
テキストボックスはすべてTabStopをTrueにし、TabIndexは順に1、2、3としています。
テキストボックス1にデータを入力後、もしテキストボックス2にデータが入っていれば、テキストボックス3をアクティブにしたいのですが、どうすれば良いのでしょうか?

Private Sub テキストボックス1_AfterUpdate()
If テキストボックス2.Value <> "" Then
テキストボックス3.SetFocus
End If
End Sub

としても、テキストボックス2のTabIndexが2なのでテキストボックス2がアクティブになってしまいます。
どうか、よろしくお願いいたします。

A 回答 (3件)

以下の方法では、如何ですか。



Private Sub テキストボックス1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then  'ENTER
    If テキストボックス2.Value <> "" Then
      テキストボックス5.SetFocus
    End If
  End If
End Sub
    • good
    • 0
この回答へのお礼

回答有難うございます。
このコードで動きました。本当に助かりました。有難うございました。
今、作っているプログラムに暗雲が漂っていましたが、目から鱗が落ちたかのように、完成のめどがつきました。10日間、いろいろなサイトで調べましたが、見付からず、どうしようかと思っていました。
又、何か解らないことがあれば、質問させていただきますので、
その時は、どうかよろしくお願いいたします。

お礼日時:2008/10/07 06:23

私がやると


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If TextBox2.Text <> "" Then
UserForm1.TextBox3.SetFocus
Else
UserForm1.TextBox2.SetFocus
End If
End If
End Sub
でうまく行くようですが。
    • good
    • 0
この回答へのお礼

回答有難うございます。
このコードでも、きちんと作動いたしました。
本当に有難うございました。助かりました。

お礼日時:2008/10/07 06:28

Private Sub テキストボックス1_AfterUpdate()


If isnull(テキストボックス2.Value) Then テキストボックス3.SetFocus
End Sub

これではだめですか?

この回答への補足

早速の返信、誠に有難うございます
誠に申し訳ないのですが、私が質問をあまりにも簡潔にしすぎて、上記の私の書いた式でも実際に動かしてみると、きちんと動いてしまいました。
本当に申し訳ありません。
実際はテキストボックスが5つあります。
後は上記質問と同じ内容なのですが、テキストボックス2~4までは、値が入っていて、テキストボックス1にデータを入力後、テキストボックス2にデータが入っていれば、テキストボックス5をアクティブにする方法を教えていただきたいのです。

Private Sub テキストボックス1_AfterUpdate()
If テキストボックス2.Value <> "" Then
テキストボックス5.SetFocus
End If
End Sub

実際に動かしてみると、テキストボックス5をアクティブにしたいのですが、テキストボックス3がアクティブになってしまいます。
agnostia先生のコードではテキストボックス2がアクティブになりました。
どうか、よろしくお願いいたします。
追記 本日これより夜勤に入ります。返信は明朝以降になります。

補足日時:2008/10/06 16:20
    • good
    • 0

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