EXCEL中有两种控件:表单控件和active控件
表单控件是excel5和excel95开始使用的,从excel97开始,active控件开始出现
关于表单控件和active控件的区别和使用范围,网上有很多表述,以下是我在实际使用过程中的一些体会:
1.在兼容性上,表单控件要强于active控件,由于active需要引用refedit.dll文件,而不同版本的office此文件不同,会造成在某台电脑上编写的VBA程序,换另一台电脑就不能使用
2.在事件和属性上,表单控件不如active控件,表单控件几乎只有一个click事件,而active控件每个控件都有非常多的事件,而且每个事件也可以编写不同的过程。active控件可控制的属性也非常多,这为程序界面设计提供了很多的变化。
3.多数情况下,我们通过表单控件加编写特定的过程就可以完成对工作表的大部分控制,但是如果对程序的界面设计或者人机交互(例如弹出输入框等)要求较高,则应该使用active控件,并且active控件应和userform一起使用才更能发挥其作用
4.表单控件作为一个旧版excel留下来的功能,也许微软会在未来将其取消,完全由active所取代,这也是一个需要权衡的地方。
在VBA中的使用上,二者也有一些区别
一、表单控件
VBA中引用表单控件有两种方法:
1.直接使用对象名称,这样非常简洁方便,但是编辑器中输入代码没有方法和属性的提示
如:Sheet1.Labels("标签 1").Caption = "我是标签1"
注意空格
也可以使用如下语句实现变量控制
Sheet1.Labels("标签 " & i).Caption = "我是标签1"
2.使用DrawingObjects表示
如:Sheet1.DrawingObjects("标签1").Caption = "我是标签1"
但是注意,DrawingObjects正在渐渐被shape对象取代
二、active控件
VBA中引用active控件可以使用oleobject对象,并且可以加变量
Sheets(1).OLEObjects("CheckBox" & i).Object.Value