【问题标题】: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
      

      【讨论】:

      • 对于它的价值,该代码根本没有做任何事情。
      猜你喜欢
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多