首页 > 解决方案 > 创建一个用户表单来比较 4 个扫描的项目

问题描述

如果这看起来很简单,我很抱歉。我是 VBA 新手,正在努力确定从哪里开始。

我正在尝试创建一个用户表单,您可以在其中扫描样本,然后是 3 个应该与第一个样本匹配的试管,如果它们匹配,它将将该数据发送到电子表格,如果不匹配,那么它将突出显示红色和让你重新开始。

我遇到了一些问题。我不确定如何在扫描第一个样本后自动进入下一个文本框。为了便于使用,我希望用户能够在不与电子表格交互的情况下扫描、扫描、扫描、扫描。

我还尝试通过放入 If/Else 语句来使用 AutoTab 函数,说如果文本框的值不为空,它将 AutoTab 到选项卡索引中的下一个框,但这似乎不起作用

请让我知道您可能有的任何建议。

标签: vbauserformbarcode-scannerscanning

解决方案


基本上,条形码扫描仪的输入与有人手动输入数据相同 - 只是所有字符同时出现(就像粘贴一样)。通常,扫描仪应该能够发送一些结束符号,在这种情况下你应该没问题,因为 TAB 或 ENTER 会自动跳转到下一个字段。

如果扫描仪真的发送数据,则必须处理Change文本框的 -Event 并检查数据是否有效。以下示例检查 8 个字符的长度。适应CheckBarcodeInput您的需求。如果输入了有效的条形码,则焦点设置到下一个文本框。

Private Sub TextBox1_Change()
    If CheckBarcodeInput(Me.TextBox1.Text) Then Me.TextBox2.SetFocus
End Sub

Private Sub TextBox2_Change()
    If CheckBarcodeInput(Me.TextBox2.Text) Then Me.TextBox3.SetFocus
End Sub
(...)    

Private Function CheckBarcodeInput(s As String) As Boolean
    ' Check if barcode is valid. In this example, it simply checks the length.
    If Len(s) >= 8 Then CheckBarcodeInput = True
End Function

推荐阅读