首页 > 解决方案 > 用户输入后,我已经自动填充了 2 个其他文本框,如何阻止我的宏在其他框上运行搜索?

问题描述

我有 3 个文本框,当您将数据输入任何一个文本框时,其他 2 个将填充。

代码很长,所以我只是在每一行代码中添加了它的作用

Private Sub tbAC_AfterUpdate()

'Declarations

textbox 1 = tbAC
textbox 2 = tbAN
textbox 3 = tbIC

If tbAC is Nothing Then
    tbAC = ""

Elseif tbAC.TextLength > 0 Then

'Find tbAC in column AGC
Set MCodef = wsa.Columns(AGC).Find(what:=tbAC, LookIn:=xlValues, Lookat:=xlPart)

    If MCodef is Nothing Then
        Msgbox ("Invalid Code")

    Else
        Mcoder = Mcodef.Row
        tbAN = wsa.Range(AGN & Mcoder).Value
        tbIC = wsa.Range(AIC & Mcoder).Value
    End if
End If
End Sub

'It's pretty much the same if you fill in tbAN or tbIC

Private Sub tbAN_AfterUpdate()
End Sub

Private Sub tbIC_AfterUpdate()
End Sub

鉴于 tbAN 中的用户输入,我只希望 excel 运行 sub tbAN_AfterUpdate 而不是其他的。任何帮助将不胜感激,在此先感谢!

标签: excelvba

解决方案


如果您有通过在文本框中输入数据来触发的代码,但不希望在 VBA 中使用备用函数时执行该代码,您可以使用:

Application.EnableEvents = False

因此,如果您正在输入 TextBox1 并希望在输入 TextBox1 时更新 TextBox2,请将其放入 TextBox1 的代码中。您将在代码首次初始化时使用它,但您需要记住在代码末尾或代码终止之前(例如通过 Exit Sub 或其他强制命令)将其反转为一次 EnableEvents = False,无代码将触发而不将其设置为:

Application.EnableEvents = True

推荐阅读