如何包装Excel游标以保持在特定的范围内

在Excel中,我有三列:

column1, column2, column3 

我正在使用连接到IPAD的条形码扫描器将数据input到Excel中。 条形码扫描器在每次扫描后发送ENTER 。 我相信我可以设置excel,使得ENTER会导致下一列被选中(而不是下一行)

但是,我不知道如何在列3中检测到ENTER之后进行下一行操作。 现在我有这个:

 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只检测单元格内的string,它不检测被按下的内容。

如何在column 3检测到ENTER后获得下一行?

你不需要这个vba代码。

最简单的方法是解锁这三列中的单元格,并locking其余的单元格。 一旦完成,保护整张纸。 但是,在保护时,请确保取消选中名为“ Select Locked Cells的选项。 黄色的柱子是不受保护的。

在这里输入图像描述

下一步是设置excel,以便在input数据后按下Enter键,光标移动到下一列。 你可以从File TAB | Options | Excel Options | Advanced (在Excel 2010中说) File TAB | Options | Excel Options | Advanced

在这里输入图像描述

当光标到达最后一列并input数据并按下input键时,光标将自动移动到下一行。 看快照。

在这里输入图像描述

HTH

除了Siddharth的出色build议外,这里还有一个基于事件的方法:

 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