プロが教えるわが家の防犯対策術!

Win2000、VB6.0です。

テキストボックスとADOコントロールを使用して、レコードを編集・更新するフォームを作っています。
ただ、簡単に書く為に下の説明文ではDBについては書きません。

Form1に、Text1とText2があるとします。
Tab移動だけではなく、Text1に4桁目まで入力された時点で、Text2へフォーカスが移動するようにしたいと考えています。
Text1のChangeイベントで、
------------------------------------
Private Sub Text1_Change()
  If Len(Text1.Text) >= 4 Then
    Text2.SetFocus
  End If
End Sub
------------------------------------
以上のように記述しています。
ただ、Form1のロード時に、
------------------------------------
Private Sub Form_Load()
  Text1.Text = "1111"
End Sub
------------------------------------
以上のように記述すると、
「実行時エラー"5";」
「プロシージャの呼び出し、または引数が不正です。」
とエラーが発生してしまいます。

ロード時にテキストボックスに表示しつつ、入力された現在の桁数をカウントして、フォーカス移動する方法は無いのでしょうか?
よろしくお願いします。

A 回答 (2件)

SetFocus を使わずに Enabled でフォーカスを移したら?


MaxLength も使って。

Private Sub Form_Load()
  With Text1
    .IMEMode = 3
    .MaxLength = 4
    .Text = "1111"
  End With
End Sub

Private Sub Text1_Change()
  If Len(Text1.Text) >= 4 Then
    With Text1
      .Enabled = False
      .Enabled = True
    End With
  End If
End Sub
    • good
    • 0

エラーを回避されるだけなら


Private Sub Text1_Change()
 If Len(Text1) >= 4 Then
  If Text2.Visible Then Text2.SetFocus
 End If
End Sub
Text2.Visible=TrueならSetFocusとすればエラーは出ないです。
    • good
    • 0

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