TextBox SetFocus 不适用于 VBA 表单 Excel
TextBox SetFocus not working on VBA Form Excel
我有一个简单的表格,我打算用它来审核我工作中的分拣站。它非常简单,看起来像这样:
.
问题:我正在使用手持式扫描仪 (Symbol LI4278) 扫描特定批次中包含的每个 SKU 的条形码。程序很简单:
- 扫描批量二维码(标签:Etiqueta de Bulto)
- 然后,焦点落在 SKU 文本标签上
- 扫描每个 SKU 条码
- 将信息发送到访问数据库。
我的问题在于,在我扫描 SKU 条形码后,焦点不会 return 到文本标签 (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
非常感谢您对此提供的帮助。我需要此应用程序完美运行并减少错误。
此致
假设条码扫描仪在每次成功扫描时自动附加一个 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
请使用类似这样的代码:
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
我有一个简单的表格,我打算用它来审核我工作中的分拣站。它非常简单,看起来像这样:
.
问题:我正在使用手持式扫描仪 (Symbol LI4278) 扫描特定批次中包含的每个 SKU 的条形码。程序很简单:
- 扫描批量二维码(标签:Etiqueta de Bulto)
- 然后,焦点落在 SKU 文本标签上
- 扫描每个 SKU 条码
- 将信息发送到访问数据库。
我的问题在于,在我扫描 SKU 条形码后,焦点不会 return 到文本标签 (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
非常感谢您对此提供的帮助。我需要此应用程序完美运行并减少错误。
此致
假设条码扫描仪在每次成功扫描时自动附加一个 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
请使用类似这样的代码:
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