Excel中的窗体控件和ActiveX控件.doc_第1页
Excel中的窗体控件和ActiveX控件.doc_第2页
Excel中的窗体控件和ActiveX控件.doc_第3页
Excel中的窗体控件和ActiveX控件.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Excel中的窗体控件和ActiveX控件2009年1月21日 评论 发表评论 Excel中有两种不同的控件。一种是窗体工具条控件(Forms toolbar controls),通过点击菜单“视图”-“工具栏”,在弹出菜单上选择“窗体”,将出现“窗体”工具条控件窗口。另外一种是ActiveX控件,通过点击菜单“视图”-“工具栏”,在弹出菜单上选择“控件工具箱”(也可以选择“Visual Basic”,然后再在工具栏上选择“控件工具箱”),将出现“控件工具箱”窗口。窗口工具条控件是Excel5和Excel95留下来的东西(在Excel 97后的版本中,添加一个Dialog Sheet后,将可以看到这个窗体工具条窗口),从Excel 97开始,Dialog Sheet被UserForm代替,并且开始使用ActiveX控件。从某些角度来讲,窗体控件甚至比ActiveX控件更有优势。1. 如果你需要在Chart工作表中添加控件,只能使用窗体工具条控件。 2. 更加方便使用VBA代码创建窗体控件以及定义事件过程。 3. 窗体控件的事件过程可以放在标准模块,可以使用任何有效的VBA过程名称,可以在控件创建之前就创建事件过程。 4. 可以给多个控件赋于一个相同的过程。 5. 可以使用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 = 我是标签1Sheet1.DrawingObjects(按钮 2).Caption = 点击我吧!Sheet1.DrawingObjects(复选框 3).Value = xlOnSheet1.DrawingObjects(选项按钮 4).Value = xlOnSheet1.DrawingObjects(列表框 5).Value = 2Sheet1.DrawingObjects(下拉框 6).Value = 4End Sub这个是使用VBA代码在工作表中添加窗体控件的例子。Sub InsertDropDown()Dim ctl As DropDown 声明下列列表变量 Sheet2.SelectCells(3, 3).SelectWith ActiveCell 在活动单元格位置创建下列列表 Set ctl = Sheet2.DropDowns.Add(.Left, .Top, .Width, .Height) 给下拉列表指定事件过程 ctl.OnAction = EnterDatactl.AddItem Item 1ctl.AddItem Item 2ctl.AddItem Item 3ctl.AddItem Item 4ctl.AddItem Item 5ctl.ListIndex = 1 第一个项目的ListIndex是0 End WithEnd SubSub EnterData() 通过Application.Caller来获得下拉列表对象 With Sheet2.DropDowns(Application.Caller)Cells(1, 1) = .List(.ListIndex)End WithEnd Sub这是使用VBA代码添加ActiveX控件的例子。Sub InsertComboBox()Dim ole As OLEObjectDim ctl As MSForms.ComboBoxDim iLine As LongDim objCodeModule As ObjectSheet2.SelectCells(3, 5).Select 插入复合框 Set ole = Sheet2.OLEObjects.Add(ClassType:=Forms.ComboBox.1) 命名 ole.Name = ComboSet ctl = ole.Objectctl.Name = Comboctl.AddItem Item1ctl.AddItem Item2ctl.AddItem Item3ctl.AddItem Item4ctl.AddItem Item5ctl.ListIndex = 0 第一个项目的ListIndex是0 添加Click事件,需要引用Microsoft Visual Basic for Application Extensibility库 Set objCodeModule = ThisWorkbook.VBProject.VBComponents(Sheet2).CodeModuleiLine = objCodeModule.createeventproc(Click, Combo)Call objCodeModule.ReplaceLine(iLine + 1, EnterData1)End SubSub EnterData1() 要使用OLEObject对象的Object属性来获得ComboBox对象 With Sheet2.OLEObj

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论