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

UserForm1の中にTextBox1とCommandButton1を作りました。バーコードをスキャンしてTextBox1に入力した値をシートのA1から順に反映したいのですが、マウスかキーボードでその都度CommandButton1を押さなければなりません。CommandButton1を押さずに、スキャンと同時にシートに反映する方法はありますか。

宣言セクション:Dim i As Integer
Private Sub CommandButton1_Click()
If Range("a1") = "" Then
i = 1
End If
Cells(i, 1) = Me.TextBox1
Me.TextBox1 = ""
i = i + 1
Me.TextBox1.SetFocus
End Sub

A 回答 (1件)

以下のようなのはいかがでしょうか?


フォーカス移動が無いとイベントが発生しないので、見えなくていいですからもう一つ TextBox(TextBox2)を作成しておきます。
-----------------------------------------------------------------------------------------
Private Sub TextBox1_AfterUpdate()
Dim i As Long
If Range("A1") = "" Then
i = 1
Else
i = Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
If Me.TextBox1 <> "" Then
Cells(i, 1) = Me.TextBox1
Me.TextBox1 = ""
End If
End Sub
-----------------------------------------------------------------------------------------
Private Sub TextBox2_Enter()
Me.TextBox1.SetFocus
End Sub
-----------------------------------------------------------------------------------------
一度終了後も次の行から始められるように少し修正してます。
    • good
    • 0
この回答へのお礼

TextBox2のイベントに「Me.TextBox1.SetFocus」と記述する方法があったのですね。ステップインで実行すると、「Private Sub TextBox1_AfterUpdate()」終了後、「Private Sub TextBox2_Enter()」が実行され、SetFocus を通っている事が確認できました。ありがとうございます。

お礼日時:2017/07/23 13:18

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