アプリ版:「スタンプのみでお礼する」機能のリリースについて

やりたい事を以下に書きます。
 ユーザーフォームで入力用のTEXTBOXがいくつかあり、TABINDEXが最初のTEXTBOXから順に入力していきます。
 1つのTEXTBOXに入力完了後した場合、TABキーまたは、ENTERにより次のTEXTBOXにフォーカスが移動し、最後にコマンドボタンにを押すと入力が完了するというフォームを作っています。
 ただし、最初のTEXTBOXに『99』を入力すると、途中のTEXTBOXへのフォーカスの移動はしないで最後のコマンドボタンにフォーカスが移動するようにしたいと考えています。

問題点を以下に書きます。
 TEXTBOXの入力完了を現在、「AfterUpdate」イベントでつかまえて、TEXTBOXの値を取得し、その値が『99』だった場合、コマンドボタンにフォーカスを移動するようにコーディングしています。
こんな感じです。(かなり省略していますが、)
Private Sub TextBox1_AfterUpdate()
If TextBox1.Value = "99" Then
CommandButton1.SetFocus
Exit Sub
End If
End Sub
この用にコーディングすると、TABINDEXが二つ後ろのTEXTBOXが入力待ち状態となってしまいます。
たとえば
TEXTBOXが3つコマンドボタンが1つのフォームだと、
TEXTBOX1に『99』と入力し、上記のコーディングだと一度コマンドボタンにフォーカスが移動したあと、最後にTEXTBOX3にフォーカスが移動して入力待ち状態となる感じです。

色々試しましたが、解決方法が見つかりません。知っている方いましたら、教えてください。

A 回答 (3件)

こんにちは。


999とか入れる事がなければ、Changeが簡単ですね。

Private Sub TextBox1_Change()
 If TextBox1.Text = "99" Then CommandButton1.SetFocus
End Sub

999も考慮すると、こんな感じでしょうか?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If KeyCode = 13 And TextBox1.Value = "99" Then
   CommandButton1.SetFocus
 End If
End Sub

Excel97で確認しました。
    • good
    • 0
この回答へのお礼

ありがとうございます。

 うまく行きそうですね。
 他の部分との関係もあるので、参考にして試してみます。

 回答ありがとうございました。

お礼日時:2003/05/20 00:10

Private Sub TextBox1_Change()


に書いたんじゃ駄目ですか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

 Changeに書くのは試していますが、やはりこのTEXTに入力されるコードが1~2桁であるため、『9』と入力されたときもイベントが発生してしまうのが問題になるので使えませんでした。

 回答ありがとうございました。

お礼日時:2003/05/20 00:04

残りのテキストボックスに入力が必要ないのであれば、残りのテキストボックスをのTEXT.Enabled = Falseとしてみてください。



もちろんタイミングを見て、Enabled = Trueに戻してくださいね。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
確かに上記の方法でうまく行きますね。

 現在作成中のフォームの仕様上も『99』を入力した場合は、終了という意味なので、他のTEXTは入力が規制されても良いかと思います。

 他にも方法がないか、他の皆さんの回答も待ってみます。

 ありがとうございました。

お礼日時:2003/05/19 20:45

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

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


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