我有一个包含多个页面的用户表单,每个页面都有文本框,我想确保它们是数字,然后再将它们转储回工作表。
我有其他正常的用户表单执行此操作:
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;运行时错误。当文本框位于框架内时,这将起作用,但似乎页面不会以相同的方式处理。
答案 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并接收预期的控件。
希望它有所帮助!