在多页面用户窗体中检查文本框的值

我有一个多个页面的用户窗体,每个都有我想确保数字的文本框,然后将它们转储回工作表。

我有其他正常的用户forms,这样做:

Private Sub myTextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) OnlyNumbers End Sub Private Sub OnlyNumbers() If TypeName(Me.ActiveControl) = "TextBox" Then With Me.ActiveControl If Not IsNumeric(.Value) And .Value <> vbNullString Then MsgBox "Sorry, only numbers allowed" .Value = vbNullString End If End With End If End Sub 

这工作正常,但是当我尝试做一些类似的这个多页面用户表单不起作用。

我试过使用

Me.ActiveControl.ActiveControl

但得到一个“对象不支持这个属性或方法”的运行时错误。 这将工作时,文本框是在一个框架内,但似乎不像页面处理相同的方式。

是的,这个是棘手的。 您可以将MultiPage控件视为位于其上的控件的父项。 你需要做的是先selectMultiPage控制,然后从那里select主动控制。

看起来像:

 Me.MultiPage1.Pages(Me.MultiPage1.Value).ActiveControl.Name 

Pages属性允许你select你想要select的页面。 您可以通过使用多页控件的索引(索引从1开始)获取此信息。 然后,您可以调用ActiveControl并获得预期的控制权。

希望能帮助到你!