我想为使用条形码扫描仪输入数据设置一个 Excel 电子表格。条码扫描器会发送条码,然后发送标签或输入键,具体取决于其编程方式。
基本上我想设置一个 excel 表,我们可以为每个项目扫描 6 个条形码,扫描仪每次跳到下一列,然后当它到达第 6 列时,下一个选项卡将使其移动到新行下一个产品。
我希望这是有道理的。它可以在 MS Word 中完成...例如,如果您创建一个有 6 列的表格并按 Tab 7 次,它将移至下一行。我想在 Excel 中执行此操作。谢谢
我想为使用条形码扫描仪输入数据设置一个 Excel 电子表格。条码扫描器会发送条码,然后发送标签或输入键,具体取决于其编程方式。
基本上我想设置一个 excel 表,我们可以为每个项目扫描 6 个条形码,扫描仪每次跳到下一列,然后当它到达第 6 列时,下一个选项卡将使其移动到新行下一个产品。
我希望这是有道理的。它可以在 MS Word 中完成...例如,如果您创建一个有 6 列的表格并按 Tab 7 次,它将移至下一行。我想在 Excel 中执行此操作。谢谢
也许我在这个问题上遗漏了一些东西,但是如果您选择六列并使用“创建列表”命令转换选择,那么每当您切换到一行的最后一个单元格时,您将自动转到下一行。此外,如果您在最后一行,将创建一个新行。我不确定你为什么需要一个宏?
TAB 或 ENTER 键已触发该SelectionChange
事件。
因此,如果您出于某些其他原因不需要使用Change
事件而不是事件,那么这可能是做同样事情的一种更简洁的方式SelectionChange
。
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngLastColumn As Range
'Note: The {Tab} or {Enter} key triggers selectionChange event.'
' Modify the address of rngLastColumn as needed. It should be one column beyond
' the last column of your inputs, so if input use columns A:F, then it should
' be Range("G:G").
Set rngLastColumn = Range("G:G")
If Not Intersect(Target, rngValidColumns.Columns(7)) Is Nothing Then
'Insert a new row:'
Target.EntireRow.Offset(1, 0).Insert
'Select the first cell in the new row'
cells(Target.Row + 1, 1).Select
End If
End Sub
嗯......经过大量实验从很多地方收集代码片段然后调试,我最终得到了以下 VBA 宏。希望能帮助到你!:)
TAB
或ENTER
键被按下时,Sub Worksheet_Change
将运行。F
是否被留下......[A]n
,其中n
= 行号。VBA 宏代码
Private Sub Worksheet_Change(ByVal Target As Range)
'Do nothing if more than one cell is changed or content deleted
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
'Column F
If Target.Column = "6" Then
'Insert new row bellow
ActiveCell.EntireRow.Offset(1, 0).Insert
'Select first cell of next row just inserted
ActiveSheet.Cells(ActiveCell.Row + 1, 1).Select
End If
End Sub
Private Sub Workbook_Activate()
Application.OnKey "{TAB}", "Worksheet_Change" 'TAB key press
Application.OnKey "~", "Worksheet_Change" 'Keyboard ENTER press
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{TAB}"
Application.OnKey "~"
End Sub