首页 > 解决方案 > 如何延迟 Userform TextBox1_Change() 触发,直到单个输入多个字符完成?

问题描述

我有一个宏,它使用来自 TextBox1 的输入值。如果给 TextBox1 整体赋值,则代码运行良好。如果一个字符一个字符地输入一个值(使用手持条形码扫描仪扫描),则代码:TextBox1_Change() 会在每个字符上触发。

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

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

也在这里问

标签: vbatriggerstextboxuserform

解决方案


文本框有几个不同的事件触发器。TextBox1_Exit 将是您正在寻找的那个。当用户点击离开文本框或关闭用户窗体时触发。

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

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

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

推荐阅读