您能在窗体中所包含的控件之间进行循环,选择那些合适类型的控件,并在这些控件中应用相应的代码。可用如下几种方式进行处理:使用TypeName函数、TypeOf运算符、或者控件名字。
TypeName()
TypeName函数返回一个字符串,例如,文本框为”TextBox”,命令按钮为”CommandButton”等等。控件的类型名称一般与控件的缺省名或标题相同,但不是数字。例如,当您添加一个新的文本框到您的窗体中,缺省设置命名为TextBox1。
TypeOf
TypeOf是确定对象类型的很好的方式。引用了对象库之后,它能直接返回该对象的类型而不是字符串。您能通过对象浏览器找到库和一个对象的类型。例如,文本框的类型是MsForms.Textbox。
TypeOf主要的优势在于使您的代码更易调试。当您试图编译模块时能捕获类型,并且TypeOf支持智能识别——开始输入“If TypeOf ctl Is”,接着您将会获得一个带有所有可用的选择的下拉列表。
“If TypeOf…Is…Then”是If语句的一类特殊的语句,其介绍在VBA帮助文档中的If语句中。
控件名字
如果您按统一的规则命名了您的控件,您能使用名称(Name)属性来识别它们,并能运用一些技术。运用Left函数,可以非常灵活的识别一组子文本框,例如,在窗体中有10个文本框,其名称分别为txtTeamName、txtTeamNumber、txtMember1、txtMember2、……、txtMember8,您能使用这种方法识别并清空名字中所有以”txtMember”开头的文本框。
例子
在下面的例子中有三个作用相同的If语句(假设您的文本框名字都是以”txt”开头):
--------------------------------------------------------------------------------
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.Textbox Then '或者
If TypeName(ctl) = "TextBox" Then '或者
If Left(ctl.Name, 3) = "txt" Then
'对文本框进行操作
ctl.Text = "Hello"
End If
Next ctl