1

Excel をインベントリ スキャン リーダーとして機能させようとしています。スキャンすると列Aに常に追加されるため、スキャンに問題があり、重複していても、スキャンされたアイテムが最後と同じであることを認識して列QTYに追加できるようにしたい. コードをどのように処理するかについて誰かが私を助けることができれば、それは素晴らしいことです!

写真 -- 載せませんが、COL A はバーコード、COL B は説明、COL C は QTY です。

4

1 に答える 1

4

このコードをシート コード モジュールに配置します (タブを右クリックし、[コードを表示] を選択します)。

リストのヘッダーは、A4 (バーコード) B4 (説明) C4 (カウント) に配置されます。セル A1 を選択し、スキャンを開始します。リストに一致するものが見つかった場合はカウントを更新し、そうでない場合は新しい行を追加します。値を入力するだけでテストしましたが、スキャンごとに {enter} を送信している限り、スキャナーでも同じように機能するはずです。

Private Sub Worksheet_Change(ByVal Target As Range)

    Const SCAN_CELL As String = "A1"
    Const RANGE_BC As String = "A5:A500"
    Dim val, f As Range, rngCodes As Range

    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range(SCAN_CELL)) Is Nothing Then Exit Sub

    val = Trim(Target.Value)
    If Len(val) = 0 Then Exit Sub

    Set rngCodes = Me.Range(RANGE_BC)

    Set f = rngCodes.Find(val, , xlValues, xlWhole)
    If Not f Is Nothing Then
        With f.Offset(0, 2)
            .Value = .Value + 1
        End With
    Else
        Set f = rngCodes.Cells(rngCodes.Cells.Count).End(xlUp).Offset(1, 0)
        f.Value = val
        f.Offset(0, 1).Value = "enter description"
        f.Offset(0, 2).Value = 1
    End If

    Application.EnableEvents = False
    Target.Value = ""
    Application.EnableEvents = True

    Target.Select

End Sub
于 2012-07-10T17:16:04.597 に答える