Использование сканера штрих-кода для поиска и редактирования таблицы с помощью Visual Basi c для приложений - PullRequest
0 голосов
/ 10 февраля 2020

Попытка использовать сканер штрих-кода для автоматического поиска в электронной таблице и ее проверки (обычные проверки активов).

Я записал макрос, и он ищет заданную строку c, а затем меняет цвет ячейки на «отметка выключена».

Как заставить его ждать ввода от сканера, а затем искать этот ввод? Я хочу, чтобы переменная «IT2000» изменялась в зависимости от сканера штрих-кода.

Записанный макрос:

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+b
'
    Sheets("S15-137").Select
    Cells.Find(What:="IT2000", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Selection.Style = "Good"
End Sub

попытался это сделать, и теперь вход сканера работает, но код не выполняется. Кроме того, как заставить его искать все листы по умолчанию?

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+b
'

Dim scannerInput As String
Dim cellFound As Range

scannerInput = Application.InputBox("Scan barcode")

Set cellFound = ThisWorkbook.Sheets("S15-137").Cells.Find(What:=Barcode, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False)
    If Not cellFound Is Nothing Then
        cellFound.Style = "Good"
    Else
        MsgBox "Value not found"
    End If

End Sub

1 Ответ

1 голос
/ 10 февраля 2020

Насколько я знаю, вы можете заставить сканер штрих-кода вставлять только что отсканированное значение в лист Excel. Если вы можете сделать это, тогда вы можете написать событие Worksheet_Change. Добавьте пустой лист, где сканер будет выводить штрих-коды, и в его модуль листов вставьте следующий код:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Barcode As String
    Dim FindCell As Range
    Barcode = Target.Value
    Set FindCell = ThisWorkbook.Sheets("S15-137").Cells.Find(What:=Barcode, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False)
    If Not FindCell Is Nothing Then
        FindCell.Style = "Good"
    End If
End Sub
...