5

在 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

4

2 回答 2

10

您不需要 vba 代码。

最简单的方法是解锁这三列中的单元格并锁定其余单元格。完成后,保护整张纸。但是,在保护时,请确保取消选中名为“Select Locked Cells查看屏幕截图”的选项。黄色列不受保护。

在此处输入图像描述

下一步是设置excel,以便在输入数据并按下回车键后,光标移动到下一列。您可以从File TAB | Options | Excel Options | Advanced

在此处输入图像描述

当光标到达最后一列并输入数据并按下回车键时,光标会自动移动到下一行。见快照。

在此处输入图像描述

高温高压

于 2012-07-06T17:33:00.727 回答
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
于 2012-07-06T19:25:03.260 回答