如果代码调用,则停止执行 "TextBox_Change" 事件
Stopping "TextBox_Change" event from executing if called by code
我有一个用户表单,其中包含一个名为 myTextBox
的 TextBox
对象。
对象内的文本可以由用户或或由代码更改。有一个 "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
。
我有一个用户表单,其中包含一个名为 myTextBox
的 TextBox
对象。
对象内的文本可以由用户或或由代码更改。有一个 "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
。