如何延迟 Userform TextBox1_Change() 触发,直到单个输入多个字符完成?

How to delay Userform TextBox1_Change() triggering until entering multiple characters singly is complete?

我有一个使用 TextBox1 中输入的值的宏。如果给 TextBox1 作为一个整体赋值,代码运行正常。如果一个值是一个字符一个字符地输入(使用手持式条形码扫描仪扫描),代码:TextBox1_Change() 会在每个字符上触发。

如何让宏仅在输入整个值时启动(值的长度可能不同)?也许有办法捕捉条形码扫描器 ENTER?

手动触发代码的额外按钮不是一个选项。

也问了here

文本框有几种不同的事件触发器。 TextBox1_Exit 就是您要找的人。它在用户单击文本框以外或关闭用户窗体时触发。

将 Sub 的名称更改为 TextBox1_Exit() 并查看行为是否符合您的要求。

如果不是,请尝试 Application.OnTime。您可以将宏执行延迟一秒,让条形码扫描器有足够的时间完成文本输入。

Application.OnTime Now() + TimeValue("00:00:01"), "MacroName"

这样解决了:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
End If
End Sub