Excel 条码扫描器自动提交
我已经有了一个条形码扫描仪VBA功能,可以识别条形码编号,但我遇到的问题是每次都必须单击“输入”,是否有任何方法可以自动执行该操作并将计数存储在特定列中?目前,如果我输入存储在B列中的相同值,它将计算C列中的记录,但我希望避免每次都按enter键 这就是我目前得到的Excel 条码扫描器自动提交,excel,vba,Excel,Vba,我已经有了一个条形码扫描仪VBA功能,可以识别条形码编号,但我遇到的问题是每次都必须单击“输入”,是否有任何方法可以自动执行该操作并将计数存储在特定列中?目前,如果我输入存储在B列中的相同值,它将计算C列中的记录,但我希望避免每次都按enter键 这就是我目前得到的 Private Sub btnAdd_Click() Dim TargetCell As Range If WorksheetFunction.CountIf(Sheets("Sheet1").Columns(2), TextBox
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
的文本框。如果是这样,代码应该在用户表单的代码模块中。如果工作表中有文本框,请将代码粘贴到文本框所在工作表的“代码”模块中
现在,如果Len(.Value)=3,则需要调整这行代码,以确定何时处理数据。这是因为只要输入一个字符,更改事件就会发生。我测试了3个字符。将数字更改为与扫描的数字长度相等的值。理论上,这仍然会使扫描仪可能发送的CR挂起。如果这导致出现问题,请在我的代码中用>=代替=
该代码会将扫描添加到现有数量中,就像您所做的那样,并在文本框中指示新的总数,以防您感兴趣。您可以将其替换为“OK”。代码将选择它输入的文本。因此,当您输入其他内容(如新扫描)时,它将被重写,而无需额外单击。什么会触发事件?为什么不使用Workbook\u SheetChange
?事件将由一个按钮触发,因此几乎可以单击该按钮,它将打开用户提示,然后持续扫描。您可以将扫描仪配置为在每次扫描后插入[Enter]吗?大多数条形码扫描仪都有此可配置设置。您是在工作表的特定单元格中扫描还是在文本框中扫描?