如果代码调用,则停止执行 "TextBox_Change" 事件

Stopping "TextBox_Change" event from executing if called by code

我有一个用户表单,其中包含一个名为 myTextBoxTextBox 对象。

对象内的文本可以由用户由代码更改。有一个 "onChange" 程序附加到文本框:

Private Sub myTextBox_Change()
    'do some stuffs
End Sub

我希望仅当用户更改文本而不是代码时才处理事件。我曾考虑过添加一个可选参数,如下所示:

Private Sub myTextBox_Change(Optional isCode As Boolean)
    If isCode = False Then
        'do some stuffs
    End If
End Sub

但这并不是很有帮助,因为在以编程方式更改名称时我无法传递 isCode = True,如下所示:

myForm.myTextBox = "new text"

有人知道我该如何解决这个问题吗?

一种方法(也许不是正确的方法?)是声明一个全局变量,以与您的 IsCode 布尔值相同的方式使用。在您的代码块期间将其设置为 true,以便 textbox_change 事件知道代码正在后台处理,然后在该代码完成后设置回 false。

将它放在普通模块的顶部(在表单模块中不起作用)

Option Compare Database
Option Explicit
Global IsCode As Boolean

然后在代码中 运行 只需根据需要设置 IsCode=true