我正在尝试在Excel中开发标签打印应用程序。
我要做的是扫描条形码并打印机,打印带有条形码的标签,这样我就可以将标签贴在别处。问题是用户窗体在打印输出命令后失去焦点,我必须单击它以获得焦点,这有点伤害了生产力。
它应该能够一个接一个地扫描和打印多个条形码。
这是我到目前为止的代码。
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim ws As Worksheet, cr As Long
Set ws = Sheets("Ataque Ácido")
cr = ws.Range("A" & Rows.Count).End(xlUp).Row
If KeyCode = vbKeyReturn Then
ws.Range("A1").Value = "*" & TextBox1.Text & "*"
ws.Range("A2").Value = TextBox1.Text
ws.Range("A1:A2").PrintOut
Me.TextBox1.SetFocus
Me.TextBox1 = Null
End If
End Sub
建议表示赞赏。
答案 0 :(得分:0)
在打开表单的代码中,将其打开为非模态:
UserForm1.Show vbModeLess
这可以防止它失去焦点并使其高亮显示。
答案 1 :(得分:0)
解决方法
可能的解决方法是覆盖生成的KeyCode
参数,以防止在Enter
事件后跳转标签:
<强>代码强>
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim ws As Worksheet, cr As Long
Set ws = Sheets("Ataque Ácido")
cr = ws.Range("A" & Rows.Count).End(xlUp).Row
If KeyCode = vbKeyReturn Then
ws.Range("A1").Value = "*" & TextBox1.Text & "*"
ws.Range("A2").Value = TextBox1.Text
ws.Range("A1:A2").PrintOut
' KeyCode = vbKeyPageDown ' edited: write line to bottom before End If
' Me.TextBox1.SetFocus ' << original code line without effect
Me.TextBox1 = ""
KeyCode = vbKeyPageDown ' << modify Enter key value to prevent from tab hopping
End If
End Sub