将多个条形码扫描到单个Excel单元格中,每个条形码位于单独的行上

将多个条形码扫描到单个Excel单元格中,每个条形码位于单独的行上,excel,excel-2010,vba,Excel,Excel 2010,Vba,图书馆有一张Excel表格,用作借阅给其他图书馆的书籍的装箱单。 每行代表一个正在包装的箱子。该行的单元格包含收件人、装运编号、箱号等信息 在其中一列中,他们希望扫描将放入该框中的几本书的条形码“采购编号”,这样每个扫描编号将显示在该单元格中的新行上 但当他们扫描条形码时,Excel会移到下一行,因为扫描仪被编程为使用CR/LF终止扫描数据 他们无法重新编程扫描仪,因为它们用于其他应用程序 我们如何让Excel: If we're in column C When Excel detec

图书馆有一张Excel表格,用作借阅给其他图书馆的书籍的装箱单。 每行代表一个正在包装的箱子。该行的单元格包含收件人、装运编号、箱号等信息

在其中一列中,他们希望扫描将放入该框中的几本书的条形码“采购编号”,这样每个扫描编号将显示在该单元格中的新行上

但当他们扫描条形码时,Excel会移到下一行,因为扫描仪被编程为使用CR/LF终止扫描数据

他们无法重新编程扫描仪,因为它们用于其他应用程序

我们如何让Excel:

If we're in column C
    When Excel detects CR/LF
        If the cell was not empty
            Append a new line to the contents of the cell
        Append the scanned data to the contents of the cell
        Stay in that cell ready for the next scan
然后,如果需要,他们可以按箭头键离开牢房


--adTHANKSvance

大多数人都知道宏代码(包括事件宏,如工作表更改)会杀死
。如果允许运行Undo
缓冲区,但不知道在更改单元格值之前可以捕获并使用
。Undo
缓冲区。换句话说,您可以获取新值,强制执行
.Undo
,然后使用换行符(例如
Chr(10)
作为分隔符)将新值附加到旧值

右键单击工作表的名称选项卡,然后选择查看代码。当VBE打开时,将以下内容粘贴到标题为Book1-Sheet1(代码)的窗格中

您没有提供任何细节,因此我将条形码输入范围想象为C2:C10。您应该能够修改该部分,使其更接近输入条形码的范围

当您认为输入范围正确时,点击Alt+Q返回工作表


注意:我没有条形码扫描器,但我过去使用过,而且它们总是模仿键盘输入(取决于条形码扫描器软件)。这适用于键盘输入,因此请确保扫描仪软件在扫描输出后附加硬返回。如果您想采用这种方法,可以使用注释行向下移动一个单元格。

谢谢。非常有趣。我测试了它,它工作了,有一个大问题。如果他们犯了一个错误(可能会把同一本书扫描两次),他们永远无法摆脱它。当然,撤销不起作用,这是意料之中的,但也不能手动编辑单元格,或清除单元格并重新开始。所以这很有趣,但并不实用。@JohnWilson-The
Delete
行为可能会在上面添加一到两行,模仿
Ctrl+Z
行为可能会更多。控制单元格或区域的重复条目时出错。很容易添加。谢谢您的建议。经过几天的努力,我还是没能成功。我想我会告诉他们这不会是自动化的。
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C2:C10")) Is Nothing Then
        On Error GoTo Fìn
        Application.EnableEvents = False
        Dim vNew As Variant
        vNew = Target.Value
        Application.Undo
        If Not IsEmpty(Target) Then
            Target = Target.Value & Chr(10) & vNew
        Else
            Target = vNew
        End If
        'Target.Offset(1,0).Activate
    End If
Fìn:
    Application.EnableEvents = True
End Sub