
VB6で複数入力項目(テキスト/コンボボックス等)がある画面を作っているのですが、文字が最大桁数に達したら、次のコンボボックスへカーソル(=フォーカス)を移動し、次の入力項目へを行いたいのですが、
どうも思った様に、移動しないです。
以下は半角数字項目が最大文字数に達した場合、次のインプットボックスへフォーカスが移動する様に組んでみました。
Private Sub Txt_Input_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0
If Len(Txt_Input.Text) >= (Txt_Input.MaxLength - 1) Then
Txt_Input2.SetFocus
End If
End Sub
ところが、バックスペースでも1文字分と捉えてしまう様で、3文字入力の場合等は先頭から入力し直さないと、再入力も儘ならない状態です。
何かバックスペースも自然に効く形で同様の制御は行えないものでしょうか。
(尚、MaxLength - 1の部分は-1しないとフォーカスが動きませんでした。)
No.2ベストアンサー
- 回答日時:
>越えた時のキー入力値を次のセルに投入したいのです。
MaxLength=3で、4文字目を入力した時に次へ入力すると言うことでいいのでしょうか。
以下のサンプルは、MaxLength=3で設定していると仮定して、
3文字目を入力するとフォーカスのみを移動。
フォーカスを戻し、4文字目を入力すると入力された値が
次のテキストボックスへ表示されます。
解釈が間違っていたら、再度補足してください。
Private Sub Txt_Input_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0
If KeyAscii <> 8 Then
'MaxLengthを超えた時は、キー入力を次へ渡す
If Len(Txt_Input.Text) > (Txt_Input.MaxLength - 1) Then
Txt_Input2.SetFocus
SendKeys "{" & Chr(KeyAscii) & "}"
End If
'MaxLengthと同じ時は、フォーカスのみを移動
If Len(Txt_Input.Text) >= (Txt_Input.MaxLength - 1) Then
Txt_Input2.SetFocus
End If
End If
End Sub
No.1
- 回答日時:
If Len(Txt_Input.Text) >= (Txt_Input.MaxLength - 1) Then
Txt_Input2.SetFocus
End If
↑この処理を、バックスペース以外のときに処理するようにすればどうでしょうか。
If KeyAscii <> 8 Then
If Len(Txt_Input.Text) >= (Txt_Input.MaxLength - 1) Then
Txt_Input2.SetFocus
End If
End If
この回答への補足
出来ればMaxLength値を操作せず、越えた時のキー入力値を次のセルに投入したいのです。現行の場合、MaxLength値を越えると次のセルへフォーカスは移動しますが、キー入力値は持って来られないようです。入力値の一時退避以外の方法で実現の方法を御存知ないでしょうか。
補足日時:2003/10/20 11:47お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Access(アクセス) Access の SetFocus について教えてください 5 2022/08/04 07:32
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
油性マジックで書いたサインを...
-
他の人には声だして挨拶してる...
-
迷惑メールの来ないアドレス
-
業務に差し支えのないテンキー...
-
最高のホームページを作る
-
ENDLICHERIのサイトの行き方
-
ユーザーフォームのSetFocusが...
-
油性マジックの消し方
-
フラッシュを無料で作成したい...
-
フォント「Impact」
-
GridViewでハイライトを使用し...
-
旅好きの方にお伺いします!!
-
矢印(左右)キーでイベントを...
-
エクセルVBA テキストボックス...
-
コマンドボタンのEnterイベント...
-
エクセルで、任意のテキストボ...
-
Accessの更新後処理で特定の条...
-
酸素ボンベのレギュレーターか...
-
プログラムからTera Termに文字...
-
DateTimePicker のEnable
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
他の人には声だして挨拶してる...
-
C# ReadOnlyのTextBoxで
-
ユーザーフォームのSetFocusが...
-
矢印(左右)キーでイベントを...
-
業務に差し支えのないテンキー...
-
Private Sub内でSubをCallしたい
-
エクセルVBA テキストボックス...
-
GridViewでハイライトを使用し...
-
テキストボックス入力後、警告...
-
プログラムからTera Termに文字...
-
コマンドボタンのEnterイベント...
-
MFCでコンボボックスを選択不可...
-
VB.NET ボタン押下で一つ前の...
-
油性マジックで書いたサインを...
-
Accessの更新後処理で特定の条...
-
DateTimePicker のEnable
-
スプレットシートでフォーカス...
-
VC++2010のラジオボタンの選択...
-
油性マジックの消し方
おすすめ情報