Сканер штрих-кода автомат c отправить - PullRequest
0 голосов
/ 28 января 2020

У меня уже есть функция VBA сканера штрих-кода, которая распознает номер штрих-кода, но проблема в том, что мне приходится каждый раз нажимать клавишу ввода, есть ли способ сделать это автоматически и сохранить счет в определенном столбце? В настоящее время это работает, если я ввожу то же значение, которое хранится в столбце B, оно будет считать записи в столбце C, но я хочу избегать нажатия Enter каждый раз, когда

Это то, что я получил до сих пор

Private Sub btnAdd_Click()
Dim TargetCell As Range
If WorksheetFunction.CountIf(Sheets("Sheet1").Columns(2), TextBox1.Value) = 1 Then
    Set TargetCell = Sheets("Sheet1").Columns(2).Find(TextBox1.Value, , xlValues, xlWhole).Offset(0, 1)
    TargetCell.Value = TargetCell.Value + 1
Else
    MsgBox "Code not found"
End If
Me.Hide
End Sub

1 Ответ

0 голосов
/ 28 января 2020

Трудно сказать, что у тебя есть. Например, кто нажимает кнопку? Или ваш сканер вводит возврат. Я думаю, что код ниже должен работать при любых обстоятельствах. Пожалуйста, попробуйте.

Private Sub TextBox1_Change()

    Dim TargetCell As Range
    Dim Qty As Long

    With TextBox1
        If Len(.Value) = 3 Then
            Set TargetCell = Worksheets("Sheet1").Columns(2) _
                            .Find(.Value, , xlValues, xlWhole)
            If TargetCell Is Nothing Then
                MsgBox """" & .Value & """ Code not found"
            Else
                With TargetCell.Offset(0, 1)
                    Qty = .Value + 1
                    .Value = Qty
                End With
                Application.EnableEvents = False
                TextBox1.Value = "Count = " & Qty
                Application.EnableEvents = True
            End If

            .SelStart = 0
            .SelLength = Len(.Value)
        End If
    End With
End Sub

Я думаю, что у вас есть пользовательская форма, и в этой форме у вас есть текстовое поле с именем TextBox1. Если это так, код должен быть в модуле кода формы пользователя. Если у вас есть текстовое поле на листе, вставьте код в модуль кода листа, на котором находится текстовое поле.

Теперь вам нужно настроить эту строку кода If Len(.Value) = 3 Then, чтобы определить, когда обрабатывать данные. Это связано с тем, что событие Изменить будет происходить всякий раз, когда вводится хотя бы один символ. Я тестировал с 3 персонажами. Измените число на значение, равное длине номеров, которые вы сканируете. Теоретически это все еще оставляет зависание CR, которое также может отправлять ваш сканер. Если это вызывает проблему, поэкспериментируйте с> = вместо = в моем коде.

Код добавит отсканированное изображение к существующему количеству, так же, как оно было у вас, и укажет новый итог в текстовом поле. В случае, если вы заинтересованы. Вы можете заменить это на «ОК». Код выберет текст, который он вводит. Поэтому, когда вы вводите что-то еще, например, новое сканирование, оно будет перезаписано без дополнительных кликов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...