• ベストアンサー

エクセル VBA タブストップに対する質問

初心の質問で申し訳ありませんが、困っていますので、回答をよろしくお願いいたします。 テキストボックス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がアクティブになってしまいます。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

以下の方法では、如何ですか。 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

noname#140980
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

私がやると 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 でうまく行くようですが。

noname#140980
質問者

お礼

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

  • agnostia
  • ベストアンサー率36% (4/11)
回答No.1

Private Sub テキストボックス1_AfterUpdate() If isnull(テキストボックス2.Value) Then テキストボックス3.SetFocus End Sub これではだめですか?

noname#140980
質問者

補足

早速の返信、誠に有難うございます 誠に申し訳ないのですが、私が質問をあまりにも簡潔にしすぎて、上記の私の書いた式でも実際に動かしてみると、きちんと動いてしまいました。 本当に申し訳ありません。 実際はテキストボックスが5つあります。 後は上記質問と同じ内容なのですが、テキストボックス2~4までは、値が入っていて、テキストボックス1にデータを入力後、テキストボックス2にデータが入っていれば、テキストボックス5をアクティブにする方法を教えていただきたいのです。 Private Sub テキストボックス1_AfterUpdate() If テキストボックス2.Value <> "" Then テキストボックス5.SetFocus End If End Sub 実際に動かしてみると、テキストボックス5をアクティブにしたいのですが、テキストボックス3がアクティブになってしまいます。 agnostia先生のコードではテキストボックス2がアクティブになりました。 どうか、よろしくお願いいたします。 追記 本日これより夜勤に入ります。返信は明朝以降になります。

関連するQ&A