在Excel中,我有三列:
column1, column2, column3
我使用连接到IPAD的条形码扫描仪将数据输入excel。条形码扫描器在每次扫描后发送ENTER
。我相信我可以设置excel,以便ENTER
会导致选择下一列(而不是下一行)
但是,在ENTER
中检测到column3
后,我不知道如何将其转到下一行。现在我有这个:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 3 Then
If Target.Value = "{enter}" Then
MsgBox "SDf"
End If
End If
End Sub
但是Target.Value
只检测单元格内的字符串,它不会检测到已按下的内容。
如何在ENTER
中检测到column 3
之后选择下一行?
答案 0 :(得分:10)
您不需要vba代码。
最简单的方法是解锁这三列中的单元格并锁定其余单元格。完成后,保护整张纸。但是,在保护时,请确保取消选中名为Select Locked Cells
的选项。黄色柱子没有受到保护。
下一步是设置excel,以便在输入数据并按下Enter键后,光标移动到下一列。您可以从File TAB | Options | Excel Options | Advanced
当光标到达最后一列并输入数据并按下输入时,光标将自动移动到下一行。见快照。
HTH
答案 1 :(得分:4)
除了Siddharth的出色建议,这里还有基于事件的方法:
Private Sub Worksheet_Change(ByVal Target As Range)
'named (contiguous) range on input sheet
Const DATA_NAME As String = "DATA"
Dim rngData As Range, numCols As Long
If Target.Cells.Count > 1 Then Exit Sub
Set rngData = Me.Range(DATA_NAME)
numCols = rngData.Columns.Count
If Not Intersect(rngData, Target) Is Nothing Then
If Target.Column < rngData.Columns(numCols).Column Then
Target.Offset(0, 1).Select
Else
Target.Offset(1, -(numCols - 1)).Select
End If
End If
End Sub