5

Excel には、次の 3 つの列があります。

column1, column2, column3

IPAD に接続されているバーコード スキャナーを使用して Excel にデータを入力しています。バーコード スキャナENTERは、スキャンごとに送信します。ENTER次の行ではなく次の列が選択されるようにExcelを設定できると思います

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 コードは必要ありません。

最も簡単な方法は、これら 3 つの列のセルのロックを解除し、残りのセルをロックすることです。完了したら、シート全体を保護します。ただし、保護するときは、[Select Locked Cellsスクリーンショットを表示] というオプションのチェックを外してください。黄色の列は保護されていません。

ここに画像の説明を入力

次のステップは、データが入力されてEnterキーが押された後にカーソルが次の列に移動するようにExcelを設定することです。あなたはそれを行うことができます(Excel 2010で言う)File TAB | Options | Excel Options | Advanced

ここに画像の説明を入力

カーソルが最後の列に到達し、データが入力されてエンターが押されると、カーソルは自動的に次の行に移動します。スナップショットを参照してください。

ここに画像の説明を入力

HTH

于 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 に答える