Excel选项卡在一定数量的列之后换行

我想要设置一个Excel电子表格用于条形码扫描器的数据input。 条形码扫描器发送条形码,然后根据其编程的方式发送标签或回车键。

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

我希望这是有道理的。 它可以在MS单词中完成…例如,如果您创build一个具有6列的表格,并且推送标签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 

那么…经过大量的试验,从很多地方收集代码片段,然后debugging,我最终得到了下面的VBAmacros。 希望能帮助到你! 🙂

  1. 当按下TABENTER键时, Sub Worksheet_Change将运行。
  2. 它会检查是否列F
  3. 如果为true =>插入新行并select第一个单元格[A]n ,其中n =行号。

VBAmacros代码

 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 

也许我错过了关于这个问题的一些事情,但是如果你select你的六列并用“创build列表”命令来转换select,那么无论你何时select一行的最后一个单元格,你都会自动进入下一行。 而且,如果你在最后一行,将会创build一个新的。 IM不知道为什么你需要一个macros?

Interesting Posts