【问题标题】:How to delay Userform TextBox1_Change() triggering until entering multiple characters singly is complete?如何延迟 Userform TextBox1_Change() 触发,直到单个输入多个字符完成?
【发布时间】:2021-05-14 07:55:54
【问题描述】:
我有一个宏,它使用来自 TextBox1 的输入值。如果给 TextBox1 整体赋值,则代码运行良好。如果一个字符一个字符地输入(使用手持条形码扫描仪扫描),则代码:TextBox1_Change() 会在每个字符上触发。
如何使宏仅在输入整个值时才启动(值的长度可能不同)?也许有办法捕捉条形码扫描仪 ENTER?
手动触发代码的额外按钮不是一种选择。
还问here
【问题讨论】:
标签:
vba
triggers
textbox
userform
【解决方案1】:
文本框有几种不同的事件触发器。 TextBox1_Exit 将是您正在寻找的那个。当用户点击离开文本框或关闭用户窗体时触发。
将 Sub 的名称更改为 TextBox1_Exit() 并查看行为是否符合您的要求。
如果不是,请尝试Application.OnTime。您可以将宏执行延迟一秒,让条形码扫描仪有足够的时间来完成文本输入。
Application.OnTime Now() + TimeValue("00:00:01"), "MacroName"
【解决方案2】:
解决了这个问题:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
End If
End Sub