Application.EnableEvents = False,但textbox_Enter子仍在多页用户窗体VBA中触发

时间:2019-03-18 22:31:40

标签: excel vba userform multipage

我有一个名为MultiPage1的多页用户箱(默认情况下)。

这包括6个页面,所有页面上都有数百个文本框,并且它们都可以完美运行...

我有一个问题。当Multipage.Value = 3似乎启动textbox_Enter事件时,无论我做什么,以确保整个序列中文本框都没有 focus

我当然尝试过Application.EnableEvents = False,但我相信用户形式不会触发传统意义上的事件。

我一生无法解决问题。但是它可以在我尝试过的所有机器上复制。

有趣的是,当我通过删除麻烦的文本框并将其替换为名称完全相同的新文本框来重命名麻烦的文本框时,问题转移到序列中的下一个文本框。

TextBoxTEST1_Enter不再触发,现在TextBoxTEST2_Enter触发。

我拥有300多个文本框,不愿重新创建它们!

有什么想法吗?!

非常感谢,

菲尔

1 个答案:

答案 0 :(得分:1)

避免自动激活文本框

一种简单的解决方法是分配 zero .Width zero .Height zero {{1} },每页只有一个虚拟文本框。

可能的命名约定可以是第一页上的.TabIndex,第二页上的Dummy1等。

代码示例

Dummy2

旁注

尝试类似的方法将 dummy 文本框移到视线之外(例如,通过负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 属性)失败,例如 它在左页面边框显示一个闪烁的光标,与所选值无关。