如何包装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