TextBox SetFocus在VBA Form Excel上不工作

vlf7wbxs  于 2023-05-19  发布在  其他
关注(0)|答案(3)|浏览(315)

我有一个简单的表格,我打算用在审计分拣站在我的工作。它很简单,看起来像这样:
.
问题:我正在使用手持式扫描仪(符号LI4278)扫描特定批量中包含的每个SKU的条形码。程序很简单:
1.扫描批量代码(标签:Etiqueta de Bulto)
1.然后,焦点转到SKU文本标签
1.扫描每个SKU条形码
1.向访问数据库发送信息。
我的问题在于,在我扫描一个SKU条形码后,焦点不会返回到文本标签(T4)以继续扫描(SKU文本标签= 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

我真的很感激你的帮助。我需要这个应用程序的工作完美的操作目的,减少错误。
问候

ve7v8dk2

ve7v8dk21#

假设条形码扫描仪在每次成功扫描时自动附加Enter,您只需要在KeyDown事件中捕获Enter并替换为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
bnlyeluc

bnlyeluc2#

请使用类似这样的代码:

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
            ByVal X As Single, ByVal Y As Single)

   If UserForm1.ActiveControl.Name = "List1" Then
   UserForm1.TextBox1.SetFocus
   End If

End Sub
wecizke3

wecizke33#

首先,将表单的Cycle属性设置为2 - fmCycleCurrentForm。然后,使用Application.SendKeys导航到所需的对象。
下面是一个示例代码,我在Serial_number文本框中扫描QR码,并使用提供的代码将焦点设置回Serial_number文本框:

Private Sub cmd_add_color_Click()
    Call addColor
    cmb_color.SetFocus
    Application.SendKeys "{TAB}"       ' Getting setfocus back to the serial textbox
End Sub

相关问题