在PrintOut命令

时间:2018-04-06 13:28:18

标签: excel vba excel-vba

我正在尝试在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

建议表示赞赏。

2 个答案:

答案 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