SetFocus не работает на VBA Form Excel - PullRequest
0 голосов
/ 16 мая 2018

У меня есть простая форма, которую я планирую использовать для проверки сортировочной станции на моей работе. Это довольно просто и выглядит так:

Форма изображения .

Проблема: я использую ручной сканер (Symbol LI4278) для сканирования штрих-кодов каждого SKU, содержащегося в определенном объеме. Процедура проста:

  1. Сканирование основного кода (ярлык: Etiqueta de Bulto)
  2. Затем фокус падает на текст SKU. Метка
  3. Сканирование каждого штрих-кода SKU
  4. Отправка информации в базу данных доступа.

Моя проблема заключается в том, что после того, как я сканирую штрих-код SKU, фокус не возвращается к текстовой метке (T4), чтобы продолжить сканирование (SKU TEXT LABEL = T4), если только я не нажму TAB один раз. Мне нужно, чтобы это было автоматически, а свойство setfocus не работает.

Вот мой код:

Private Sub txtSKU_Change()

            Application.EnableEvents = False
            txtBulto.Locked = True

            If Len(Me.txtSKU.Value) = 13 Then

                Me.L1.ColumnCount = 3
                Me.L1.AddItem Me.txtBulto.Value
                Me.L1.List(L1.ListCount - 1, 1) = Me.txtSKU.Value
                Me.L1.List(L1.ListCount - 1, 2) = Me.txtAuditor2.Value
                End If

              txtSKU.SetFocus  
            Application.EnableEvents = True
     End Sub

Я бы по-настоящему оценил вашу помощь в этом. Мне нужно, чтобы это приложение идеально работало в целях эксплуатации и уменьшало количество ошибок.

Привет

1 Ответ

0 голосов
/ 23 мая 2018

Предполагая, что сканер штрих-кода автоматически добавляет Ввод при каждом успешном сканировании, вам просто нужно перехватить это событие Enter при KeyDown и заменить на KeyCode 0.

Попробуйте прокомментировать ваш txtSKU_Change Sub и добавить ниже, чтобы проверить:

Private Sub txtSKU_Change()
    Dim sValue As String
    With Me.txtSKU
        sValue = WorksheetFunction.Trim(.Value)
        If Len(sValue) = 13 Then
            With Me.L1
                .AddItem Me.txtBulto.Value
                .List(.ListCount - 1, 1) = sValue
                .List(.ListCount - 1, 2) = Me.txtAuditor2.Value
            End With
            .Value = vbNullString
        End If
    End With
End Sub

Private Sub txtSKU_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then KeyCode = 0 ' Rejects Enter Key
End Sub

...