首页 > 解决方案 > TextBox SetFocus 不适用于 VBA 表单 Excel

问题描述

我有一个简单的表格,我打算用它来审核我工作中的分拣站。它非常简单,看起来像这样:

.

问题:我正在使用手持式扫描仪 (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

我非常感谢您在这方面的帮助。我需要这个应用程序完美地用于操作目的并减少错误。

问候

在此处输入图像描述

标签: excelvbafocususerformsetfocus

解决方案


假设条形码扫描仪在每次成功扫描时自动附加一个Enter,您只需在 KeyDown 事件中捕获该 Enter 并替换为 KeyCode 0。

尝试评论您的txtSKU_ChangeSub 并在下面附加以进行测试:

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


推荐阅读