条码扫描器自动提交



我已经有一个条形码扫描仪VBA功能,可以识别条形码编号,但是我遇到的问题是我每次都必须单击输入,有没有办法自动执行此操作并将计数存储在某个列中?目前,如果我输入存储在 B 列中的相同值,它可以工作,它将计算 C 列中的记录,但我想避免每次都按 Enter 键

这就是我到目前为止得到的

Private Sub btnAdd_Click()
Dim TargetCell As Range
If WorksheetFunction.CountIf(Sheets("Sheet1").Columns(2), TextBox1.Value) = 1 Then
Set TargetCell = Sheets("Sheet1").Columns(2).Find(TextBox1.Value, , xlValues, xlWhole).Offset(0, 1)
TargetCell.Value = TargetCell.Value + 1
Else
MsgBox "Code not found"
End If
Me.Hide
End Sub

很难说你有什么。例如,谁按下按钮?或者,您的扫描仪是否输入了退货。我认为下面的代码在任何情况下都应该有效。请尝试一下。

Private Sub TextBox1_Change()
Dim TargetCell As Range
Dim Qty As Long
With TextBox1
If Len(.Value) = 3 Then
Set TargetCell = Worksheets("Sheet1").Columns(2) _
.Find(.Value, , xlValues, xlWhole)
If TargetCell Is Nothing Then
MsgBox """" & .Value & """ Code not found"
Else
With TargetCell.Offset(0, 1)
Qty = .Value + 1
.Value = Qty
End With
Application.EnableEvents = False
TextBox1.Value = "Count = " & Qty
Application.EnableEvents = True
End If
.SelStart = 0
.SelLength = Len(.Value)
End If
End With
End Sub

我认为您有一个用户表单,在此表单中,您有一个名为TextBox1的文本框。如果是这样,则代码应位于用户窗体的代码模块中。如果工作表中有文本框,请将代码粘贴到文本框所在的工作表的代码模块中。

现在,您需要调整此行代码If Len(.Value) = 3 Then以确定何时处理数据。这是因为只要输入单个字符,就会发生Change事件。我用 3 个字符进行了测试。将数字更改为等于扫描数字长度的值。从理论上讲,这仍然会使CR挂起,您的扫描仪也可能发送。如果这导致问题,则在我的代码中用>= 代替 = 进行实验。

该代码会将扫描添加到现有数量中,就像您拥有的那样,并在文本框中指示新的总数,以备不时之需。您可以将其替换为"确定"。代码将选择它输入的文本。因此,当您输入其他内容(例如新扫描(时,它将被覆盖,而无需额外单击。

最新更新