我想设置一个Excel电子表格,以便使用条形码扫描仪输入数据。 条形码扫描器先发送条形码,然后发送制表符或Enter键,具体取决于其编程方式。

基本上,我想设置一个excel工作表,我们可以为每个项目扫描6个条形码,而扫描仪每次都跳至下一列,然后当它到达第6列时,下一个选项卡将使其移动到新行下一个产品。

我希望这是有道理的。 可以用MS字完成...例如,如果您创建一个6列的表格并按Tab 7次,它将移至下一行。 我想在Excel中执行此操作。 谢谢

===============>>#1 票数:0

好吧……经过大量尝试从许多地方收集代码然后进行调试之后,我最终得到了以下VBA宏。 希望能帮助到你! :)

  1. 当按TABENTER键时,将运行Sub Worksheet_Change
  2. 它将检查是否保留了F列...
  3. 如果为true =>插入新行,然后选择第一个单元格[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

===============>>#2 票数:0

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

===============>>#3 票数:0

也许我在这个问题上缺少一些东西,但是如果您选择六列并使用“创建列表”命令来转换选择,那么每当您选择到一行的最后一个单元格时,您都会自动转到下一行。 此外,如果您在最后一行,则会创建一个新行。 IM不确定为什么要为此使用宏?

  ask by nevodj translate from so

未解决问题?本站智能推荐: