检查多页用户表单中的文本框值

时间:2016-06-14 23:21:58

标签: excel vba userform

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

我有其他正常的用户表单执行此操作:

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

但得到一个&#34;对象不支持这个属性或方法&#34;运行时错误。当文本框位于框架内时,这将起作用,但似乎页面不会以相同的方式处理。

1 个答案:

答案 0 :(得分:1)

是的,这个很棘手。您可以将MultiPage控件视为位于其上的控件的父级。您需要做的是首先选择MultiPage控件,然后从那里选择活动控件。

看起来像:

main.cpp:16:9: warning: variable templates are a C++14 extension 
[-    Wc++14-extensions]
int table<RecordType>::CAPACITY;
    ^

“页面”属性允许您选择要选择的页面。您可以使用MultiPage控件的索引(索引从1开始)来获取此信息。然后,您可以调用ActiveControl并接收预期的控件。

希望它有所帮助!