Application.EnableEvents = False 但 textbox_Enter 子仍在多页用户窗体中触发 VBA
Application.EnableEvents = False but textbox_Enter sub still firing in multipage userform VBA
我有一个名为 MultiPage1 的多页用户框(默认情况下)。
这包括 6 个页面,所有页面上都有数百个文本框,而且它们都完美地工作...
我有一个问题。当 Multipage.Value = 3
它似乎启动了一个 textbox_Enter 事件时,无论我做什么来尝试确保文本框 没有 关注整个连载。
我当然试过 Application.EnableEvents = False
,但我相信用户表单不会触发传统意义上的事件。
我一辈子都弄不明白这个问题。但它可以在我尝试过的所有机器上复制。
有趣的是..当我通过删除它重命名麻烦的文本框,并用名称完全相同的新文本框替换它时..问题转移到序列中的下一个文本框。
TextBoxTEST1_Enter
不再触发,现在 TextBoxTEST2_Enter
触发。
有超过 300 个文本框,我不愿意重新创建它们!
有什么想法吗?!
非常感谢,
菲尔
避免自动激活文本框
一个简单的解决方法是分配 zero .Width
、zero .Height
和 零 .TabIndex
每页只有一个 虚拟 文本框。
可能的命名约定可以是 Dummy1
在第一页上,Dummy2
在第二页上等等。
代码示例
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To Me.MultiPage1.Pages.Count
Me.Controls("Dummy" & i).Width = 0
Me.Controls("Dummy" & i).Height = 0
Me.Controls("Dummy" & i).TabIndex = 0
Next i
End Sub
旁注
尝试使用类似的方法将 dummy 文本框移到看不见的地方(例如通过否定 .Left
属性) 失败, 作为
它在与所选值无关的左页边框处显示闪烁的光标。
我有一个名为 MultiPage1 的多页用户框(默认情况下)。
这包括 6 个页面,所有页面上都有数百个文本框,而且它们都完美地工作...
我有一个问题。当 Multipage.Value = 3
它似乎启动了一个 textbox_Enter 事件时,无论我做什么来尝试确保文本框 没有 关注整个连载。
我当然试过 Application.EnableEvents = False
,但我相信用户表单不会触发传统意义上的事件。
我一辈子都弄不明白这个问题。但它可以在我尝试过的所有机器上复制。
有趣的是..当我通过删除它重命名麻烦的文本框,并用名称完全相同的新文本框替换它时..问题转移到序列中的下一个文本框。
TextBoxTEST1_Enter
不再触发,现在 TextBoxTEST2_Enter
触发。
有超过 300 个文本框,我不愿意重新创建它们!
有什么想法吗?!
非常感谢,
菲尔
避免自动激活文本框
一个简单的解决方法是分配 zero .Width
、zero .Height
和 零 .TabIndex
每页只有一个 虚拟 文本框。
可能的命名约定可以是 Dummy1
在第一页上,Dummy2
在第二页上等等。
代码示例
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To Me.MultiPage1.Pages.Count
Me.Controls("Dummy" & i).Width = 0
Me.Controls("Dummy" & i).Height = 0
Me.Controls("Dummy" & i).TabIndex = 0
Next i
End Sub
旁注
尝试使用类似的方法将 dummy 文本框移到看不见的地方(例如通过否定 .Left
属性) 失败, 作为
它在与所选值无关的左页边框处显示闪烁的光标。