- ベストアンサー
TextBoxに値が入力されない場合,次のTextBoxに移動できないようにしたい
TextBox1には、1~9までの値が入力されるようにしています。 デフォルトで"0"表示しています。 TextBox1に、1~9までのどれかの値が入力されない限り、TextBox2にタブ移動できないようにしたいのですが。 つまり、TextBoxに決められた範囲の値での、必須入力制限を設けたいのです。 IF文などで、TextBox1に"0"以外の値が入っているかどうか、判定させればできるかと思うのですが、 もっと簡単に、TextBoxに必須入力の制限を機能させることはできますでしょうか?
- THUBAN
- お礼率76% (771/1002)
- Visual Basic
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、じゃんぬねっと です。 追加質問の回答をします。 > Validating イベントに、上記のコードで、1~9までの必須入力制限をかけることは実現できましたが、 > タブ移動した瞬間に、TextBoxの値が"0"に戻されてしまいます。 > どのあたりに原因がありそうですかね? 通常、何も実装していない状況ではありえないことですよね? つまり、Leave、Validating、Validated あたりのイベントで値を変えていないかを疑うべきだと思います。 VS.NET を使われているのであれば、デバッグを活用してください。 ブレークポイントを設定し、インラインで追って、いつ値が変えられているのかを、まず絞り込む必要があります。
その他の回答 (2)
- JeanneNet
- ベストアンサー率48% (100/208)
あー、肝心なところレスしてませんでした。 > 1~9までのどれかの値が入力されない限り Select Case TextBox.Text Case "1" To "9" Case Else Cancel = 1 '/ VB.NET では、e.Cancel = True End Select で良いのでは?
補足
ありがとうございます。 Validating イベントに、上記のコードで、1~9までの必須入力制限をかけることは実現できましたが、タブ移動した瞬間に、TextBoxの値が"0"に戻されてしまいます。 どのあたりに原因がありそうですかね?
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 まず、VB6 ですか? VB2002 以降ですか? どちらにしても、入力チェックですので、検証イベントでやることになります。 Validate イベント (VB2002 以降は、Validating イベント) について調べてみてください。
お礼
失礼しました。 VB.NET 2003でした。
関連するQ&A
- 【EXCEL】TextBox間の移動と複写の方法を教えてください。
エクセルVB関数にて、 1.TextBox間の移動をTabで行う。 2.複数のTextBoxがある場合、一つのTextBoxに入力した文字や値 が、残りのTextBoxにも複写される。 のやり方を教えてください。どちらか一つでも、構いません。 どうぞよろしくお願いいたします!
- ベストアンサー
- オフィス系ソフト
- 現在どのTextBox上にフォーカスがあるのかを取得したいのですが・・・
以前、TextBox1.Focusedで、TextBox1にフォーカスがあるかどうか判定できるという回答をいただき助かりましたが、現在、どこのTextBoxにカーソル(フォーカス)があるのかを取得することはできないでしょうか? というのも、タブ移動であるTextBoxにフォーカスが移ったときに、隣り合わせたTextBoxに値を入れたいので。 TextBox1.Focusedでも実現できたのですが、以下のようにIF文の嵐になってしまい、TextBoxを増やすとIF文を頭からなめるので処理スピードに問題が出てきそうなので。 If Me.TextBox1.Focused = True Then TextBox_A.Text = "値1" ElseIf TextBox2.Focused = True Then TextBox_B.Text = "値2" ElseIf TextBox3.Focused = True Then TextBox_C.Text = "値3" ElseIf TextBox4.Focused = True Then TextBox_D.Text = "値3" ・ ・ ・ LostFocuseとかで、実現した方がいいのかもしれませんが・・・どうでしょう? 毎度、面倒なご質問ばかりで、恐縮です。 ご教授、よろしくお願い致します。 ちなみに、コーディング環境は、VB.NETです。
- ベストアンサー
- Visual Basic
- VB2008 textbox入力判断について
こんばんは、いつもお世話になりました。 VB2008で "ストップワォッチ"と"タイムダウン"のプログラムを作っています。 要望: 1 TextBox1.textが入力しない時、ストップワォッチを実行 (OK) 2 TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 (OK) 3 TextBox1.textの値をクリアされた時、再度ストップワォッチを実行 4 TextBox1.textに文字列入力された時、数字に変更してから タイムダウンを実行 (例:全角12:56 →12:56) 5 TextBox1.textが入力エラーの場合は プログラムを抜け、何もしないこと 下記のソースでしたら、3と4,5はまだできていません。 宜しくお願いします。 ---------------------------------------------------- 'TextBox1.textが入力しない時、ストップワォッチを実行 If TextBox1.Modified = False Then Timer1.Enabled = True datStart = Now() Me.Button1.Enabled = False Me.Button3.Enabled = False End If 'TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 If TextBox1.Modified = True Then dTime = TextBox1.Text Timer2.Interval = 1000 Timer2.Enabled = True End If 'TextBox1.textの値を再度クリアされた時、ストップワォッチを実行 If Len(TextBox1.Text) = 0 Then TextBox1.Modified = False End If -------------------------------------------------------------- 以上
- 締切済み
- Visual Basic
- 数字のみの入力制限をかけたTextBoxで、"."の入力も許可したい
環境はVB.NETです。 以下のコードで、TextBoxへの入力を、0~9の数字のみ(BackSpaceも許可)に制限していますが、"."(少数点)の入力も許可したいです。 e.KeyChar = "."c の判定をIf文に追加してみましたが、実現できませんでした。 ご教授いただけると幸いです。 よろしくお願いします。 Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then e.Handled = True End If End Sub
- ベストアンサー
- Visual Basic
- エクセルTextBoxに入力できる値を限定したい
VBA初心者です。 エクセルのユーザーフォームでtextboxからの入力できる値を、1~10の整数か""(未入力)以外の場合にエラールーチンにgotoさせたいのですが、条件をすべて満足させる条件式が考えつきません。 お知恵を拝借できないでしょうか。 よろしくお願いします。
- 締切済み
- Visual Basic
- UserFormのTextBoxに入力した値を保存する方法がありますか
UserFormのTextBoxに入力した値を保存する方法がありますか? 具体的には、UserFormのTextBoxに2010/6/10と入力したときに シートのセルT13に表示されるように以下のマクロを作成しました。 Private Sub CommandButton1_Click() Range("T13").Value = 日付.Value If CloseMode = vbFormControlMenu Then Cancel = True Me.Hide End If End Sub 再度UserFormを開くと前の入力内容があるのですがExcelを保存 して閉じて再度シートを開くと空白になってしまいます。 UserFormを開いたタイミングで出力させたT13の値を返すという ようなマクロにするにはどうしたらよいでしょうか。 初心者なので詳しく教えていただけませんか。
- ベストアンサー
- Visual Basic
- CheckBoxとTextBoxの値を貼付る方法
よろしくお願いします。 Dim n As Long Dim r As Range Dim C, buf As String n = Cells(Rows.Count, "A").End(xlUp).Row + 1 Range("A" & n).Select For Each C In Controls If TypeName(C) = "CheckBox" Then If C.Value Then buf = buf & C.Caption & vbCrLf End If Next C ActiveCell.Offset(-1, 16).Value = buf & TextBox9.Value ’buf=チェックされている複数のCheckBoxのCaption ’この時のActiveCell.Offset(-1, 16).ValueにはbufとTextBox9の値も表示されています。 End If で、セルに入力して ActiveCell.Offset(0, 7).Value = ActiveCell.Offset(-1, 16).Value で、セルに貼り付けようとすると、bufの値のみ表示されてTextBox9の値が表示されません。 bufの値とTextBox9の値と両方をコピー表示する方法をお教えください。
- 締切済み
- その他(プログラミング・開発)
- TextBoxに連続で入力する方法
Form1に、TextBox1とTextBox2を配置しています。 TextBox1にKey入力を受け、Enter Keyで取り込む動作を、連続して行うためのプログラムを作ってみましたが、何故かEnter Keyの後、カーソルがTextBox2に移動してしまいます。Enter Keyの後、TextBox1.SetFocusで、カーソルをTextBox1にしているのですが何故が解らず困っています。Enter Kyeの後、カーソルがTextBox1に戻るようにするには、どのようにすれば良いのか教えて下さい。 PC環境は、OS=Win10 Excel=2010 です。作ったプログラムは以下の通りです。よろしくお願いします。 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Then Sheets("Sheet1").Range("A1") = TextBox1.Value TextBox1 = "" TextBox1.SetFocus End If End Sub
- ベストアンサー
- Excel(エクセル)
- C# MaskedTextBox にて、タブ移動
はまってます。。 宜しくお願いします。 【やりたいこと】 MaskedTextBox にて、最大文字を入力したら、次のコントロールに移動。 TextBox だとMaxLengthを持っているので下記でうまくいきました。 OnTextChangedイベントにて if (TextBox.MaxLength == TextBox.Text.Length) { textBox2.Focus(); } MaskedTextBox だとMaxLengthが無いので、判定基準がわかりません。 ご教授ください。 宜しくお願いします。
- 締切済み
- Microsoft ASP
- VBAでのユーザーフォーム上でのタブオーダーの移動の方法
やりたい事を以下に書きます。 ユーザーフォームで入力用の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にフォーカスが移動して入力待ち状態となる感じです。 色々試しましたが、解決方法が見つかりません。知っている方いましたら、教えてください。
- ベストアンサー
- その他(プログラミング・開発)
お礼
他のTextBoxでは上手く動作しているようですので、何か原因があるはずと思います。 ちょっと、いろいろやってみます。 ありがとうございました。