Me.ActiveControl中的Excel VBA错误13types不匹配

我正在创build一个具有多个文本框的窗体的通用validation子例程。 对于每个文本框我有一个退出事件触发以下内容:

Private Sub formatoNumerico(Optional ByVal Cancel As MSForms.ReturnBoolean) Dim tb As MSForms.TextBox Set tb = Me.ActiveControl ' Do something 

这是代码的第三行生成错误13types不匹配,为什么?

在此先感谢帮助!

选项卡主机控件是一个容器,因此它优先于其组成部分。

最简单的事情是将文本框传递给formatoNumerico否则您需要通过询问当前选项卡的ActiveControl来标识文本框:

 Private Sub formatoNumerico(Optional ByVal Cancel As MSForms.ReturnBoolean) Dim tb As MSForms.TextBox If Not (Me.ActiveControl Is Nothing) Then If TypeOf Me.ActiveControl Is MultiPage Then Set tb = Me.ActiveControl.Pages(Me.ActiveControl.Value).ActiveControl Else Set tb = Me.ActiveControl End If Debug.Print tb.Name End If End Sub 

另外请注意,切换不同选项卡上的控件不会引发_Exit

当您退出时, Textbox不再是活动控件,因此,当您尝试将当前控件(可能是也可能不是该文本框)设置为文本框typesvariables时,将导致此错误。

您将需要修改您的代码以显式引用您有兴趣修改的TextBox控件。 你也许可以在初始化表单的时候使用一些全局variables来引用它,然后在你的代码中使用这个引用。