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来引用它,然后在你的代码中使用这个引用。