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 .Widthzero .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 属性) 失败, 作为 它在与所选值无关的左页边框处显示闪烁的光标。