Excel中的窗体控件和ActiveX控件.doc
文本预览下载声明
Excel中的窗体控件和ActiveX控件
2009年
评论 发表评论
Excel中有两种不同的控件。一种是窗体工具条控件(Forms toolbar controls),通过点击菜单“视图”-“工具栏”,在弹出菜单上选择“窗体”,将出现“窗体”工具条控件窗口。另外一种是ActiveX控件,通过点击菜单“视图”-“工具栏”,在弹出菜单上选择“控件工具箱”(也可以选择“Visual Basic”,然后再在工具栏上选择“控件工具箱”),将出现“控件工具箱”窗口。
窗口工具条控件是Excel5和Excel95留下来的东西(在Excel 97后的版本中,添加一个Dialog Sheet后,将可以看到这个窗体工具条窗口),从Excel 97开始,Dialog Sheet被UserForm代替,并且开始使用ActiveX控件。
从某些角度来讲,窗体控件甚至比ActiveX控件更有优势。
如果你需要在Chart工作表中添加控件,只能使用窗体工具条控件。
更加方便使用VBA代码创建窗体控件以及定义事件过程。
窗体控件的事件过程可以放在标准模块,可以使用任何有效的VBA过程名称,可以在控件创建之前就创建事件过程。
可以给多个控件赋于一个相同的过程。
可以使用Application.Caller来获取窗体控件的名称。
窗体控件比ActiveX控件简单,基本上只有一个Click事件。而ActiveX控件可以响应丰富的事件,ActiveX控件的事件只能放在控件所在的类模块(工作表模块)或窗体模块。过程名称由控件名和事件名称组成。如果你在控件不存在的时候就创建这个控件的事件过程,然后再在代码中引用这个控件,将会出现编译错误,所以必须使用代码创建事件过程。在VBA中控制窗体控件的方法有点不同,可以使用对象名称,但这些对象名称在对象浏览器中被隐藏,这样输入代码时没有方法和属性提示(你可以在“对象浏览器”的“类”一栏中单击右键,然后选择“显示隐含成员”查看这些窗体控件)。另外有一个简单的方法就是所有的窗体控件都用DrawingObjects来表示。下面就是窗体控件的示例代码,相对应的控件从字面上很容易理解。对于复选框和选项按钮,赋值xlOn给Value属性表示选择,赋值xlOff则表示取消选择。下拉和列表框的Value属性则表示选择的第几个项目,从1开始。
Sub ChangeControls()
Sheet1.Labels(标签 1).Caption = 我是标签1
Sheet1.Buttons(按钮 2).Caption = 点击我吧!
Sheet1.CheckBoxes(复选框 3).Value = xlOn
Sheet1.OptionButtons(选项按钮 4).Value = xlOn
Sheet1.ListBoxes(列表框 5).Value = 2
Sheet1.DropDowns(下拉框 6).Value = 4
Sheet1.DrawingObjects(标签 1).Caption = 我是标签1
Sheet1.DrawingObjects(按钮 2).Caption = 点击我吧!
Sheet1.DrawingObjects(复选框 3).Value = xlOn
Sheet1.DrawingObjects(选项按钮 4).Value = xlOn
Sheet1.DrawingObjects(列表框 5).Value = 2
Sheet1.DrawingObjects(下拉框 6).Value = 4
End Sub
这个是使用VBA代码在工作表中添加窗体控件的例子。
Sub InsertDropDown()
Dim ctl As DropDown 声明下列列表变量
Sheet2.Select
Cells(3, 3).Select
With ActiveCell
在活动单元格位置创建下列列表
Set ctl = Sheet2.DropDowns.Add(.Left, .Top, .Width, .Height)
给下拉列表指定事件过程
ctl.OnAction = EnterData
ctl.AddItem Item 1
ctl.AddItem Item 2
ctl.AddItem Item 3
ctl.AddItem Item 4
ctl.AddItem Item 5
ctl.ListIndex = 1 第一个项目的ListIndex是0
End With
End Sub
Sub EnterData()
通过Application.Caller来获得下拉列表对象
With S
显示全部