Excel中表单控件和ACTIVEX控件主要区别

作者:iamlasong

最近研究了一下Excel控件。使用时可以插入两种类型的控件,一种是表单控件(在早期版本中也称为窗体控件,英文Form Controls),另一种是ActiveX控件。表单控件只能在工作表中添加和使用(呵呵,叫表单控件,但却不在表单Form中使用,Form中使用的反而是ActiveX控件),并且只能通过设置控件格式或者指定宏来使用它;而ActiveX控件不仅可以在工作表中使用,还可以在用户窗体中使用,并且具备了众多的属性和事件,提供了更多的使用方式。

关于两者网上说明很多,看了有点眼晕,我觉得,两种控件大部分功能是相同的,比如都可以指定宏,一个主要区别就是表单控件可以和单元格关联,操作控件可以修改单元格的值(不用编程),所以用于工作表,而ACTIVEX控件虽然属性强大,可控性强,但不能和单元格关联,所以用于表单Form。

在EXCEL 2003版中,“视图—工具栏”下有两个工具栏“窗体”和“控件工具箱”(而2007版中,“开发工具—插入”下就称为表单控件和ACTIVEX控件),都可以添加控件到工作表。窗体控件即是表单控件,通过控件工具箱添加的控件即是ActiveX控件。ActiveX控件比表单控件拥有更多的事件与方法,如果仅以编辑数据为目的,使用表单控件可减小文件的尺寸,缩小文件的存储空间,如果在编辑数据的同时需要对其它数据的操纵控制,使用ActiveX控件会比表单控件更灵活。

附:Excel中的窗体控件和ActiveX控件

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 = "我是标签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 Sheet2.DropDowns(Application.Caller) 
        Cells(1, 1) = .List(.ListIndex) 
    End With 
End Sub 
'这是使用VBA代码添加ActiveX控件的例子
Sub InsertComboBox() 
    Dim ole As OLEObject 
    Dim ctl As MSForms.ComboBox 
    Dim iLine As Long 
    Dim objCodeModule As Object   
    Sheet2.Select 
    Cells(3, 5).Select 
    ' 插入复合框     
    Set ole = Sheet2.OLEObjects.Add(ClassType:="Forms.ComboBox.1") 
    ' 命名 
    ole.Name = "Combo" 
    Set ctl = ole.Object 
    ctl.Name = "Combo"   
    ctl.AddItem "Item1"
    ctl.AddItem "Item2" 
    ctl.AddItem "Item3" 
    ctl.AddItem "Item4" 
    ctl.AddItem "Item5" 
    ctl.ListIndex = 0       ' 第一个项目的ListIndex是0  
    ' 添加Click事件,需要引用Microsoft Visual Basic for Application Extensibility库 
    Set objCodeModule = ThisWorkbook.VBProject.VBComponents("Sheet2").CodeModule 
    iLine = objCodeModule.createeventproc("Click", "Combo") 
    Call objCodeModule.ReplaceLine(iLine + 1, " EnterData1")
End Sub 

Sub EnterData1() 
    ' 要使用OLEObject对象的Object属性来获得ComboBox对象 
    With Sheet2.OLEObjects("Combo") 
        Cells(2, 1) = .Object.Text
    End With
End Sub 
'过程InsertComboBox将在Sheet2的工作表模块中自动生成复合框的Click事件过程。 
Private Sub Combo_Click() 
    EnterData1 
End Sub



  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ActiveX和VBA参考.chm是一种帮助文档(CHM文件),用于提供关于ActiveX和VBA技术的参考信息。 ActiveX是一种微软提供的技术,用于创建可在不同应用程序之间进行交互的组件。利用ActiveX,开发人员可以编写可以在各种编程语言(如C++、VB等)使用的可复用组件。ActiveX控件是以二进制文件的形式存在的,可以在网页(如Internet Explorer)或系统界面嵌入,以提供特定功能或交互。 ActiveX控件广泛应用于浏览器插件、图形、数据库访问、数据交换等领域。 VBA(Visual Basic for Applications)是一种基于Visual Basic语言的开发工具,主要用于自动化和定制微软Office套件的各种应用程序,如Excel、Word、Access等。VBA可以通过编写脚本来控制应用程序的各种操作,从而增强应用程序的功能和灵活性。VBA不仅可以自动执行常规操作,还能够与其他应用程序进行交互,实现数据的获取和处理。 参考.chm文件提供了关于ActiveX和VBA的详细文档和示例代码。这些文档可以帮助开发者了解ActiveX和VBA的基本概念、语法、应用场景和使用方法。如何创建、部署和使用ActiveX控件,如何编写VBA宏和脚本来实现自动化操作等等。通过参考.chm文件,开发人员可以更好地利用ActiveX和VBA技术来满足自己的需求,并提高开发效率。 ### 回答2: ActiveX是一种软件框架,可以用于创建交互式的Internet应用程序。它使用成熟的编程语言(如C++)来开发组件,用于增强网页浏览器的功能。ActiveX组件可以通过将其嵌入到网页来提供多种功能,如播放音频、视频或动画,创建表单或控件等。使用ActiveX,开发人员可以使用编程语言(如VBScript、JScript等)来控制和管理这些组件。因此,ActiveX在网页上提供了更丰富和交互式的功能。 VBA(Visual Basic for Applications)是一种基于Visual Basic的编程语言,用于自动化和定制Microsoft Office应用程序。VBA提供了一整套编程工具,可以对Office应用程序(如Excel、Word、PowerPoint等)进行自定义和扩展。通过VBA,用户可以编写宏(即一系列指令),然后通过按下快捷键或与自定义按钮进行交互来执行这些宏。这些宏可以执行复杂的任务,如自动填充数据、生成报表、创建自定义功能等。 参考.chm是微软提供的一种帮助文件格式,用于存储和显示程序开发的相关文档和参考资料。参考.chm提供了一个结构良好的目录和索引,使得开发人员可以轻松查找所需的信息。这些参考文件通常包含有关特定编程语言、框架或工具的详细说明,包括语法、函数、类、属性等。由于.chm文件的结构简单,内容易于导航和搜索,因此它非常适合开发人员进行快速查找和参考。 所以,ActiveX和VBA在软件开发都扮演着重要的角色。ActiveX主要用于增强Web浏览器的功能,而VBA主要用于定制和扩展Microsoft Office应用程序。参考.chm是微软提供的帮助文件格式,用于存储和显示与开发相关的参考文档和资料。开发人员可以利用这些工具和资源来更有效地进行软件开发和定制,提高工作效率。 ### 回答3: ActiveX和VBA是与微软相关的两种技术。 ActiveX是一种基于COM(Component Object Model,组件对象模型)的技术,用于创建可重用的软件组件。它可以被多个应用程序使用,并且能够在不同的操作系统上运行。ActiveX组件可以实现各种功能,如图形显示、数据访问、网络通信等等。通过ActiveX,开发者可以利用现有的组件来加快软件开发过程,提高开发效率。 VBA则是Visual Basic for Applications的缩写,是一种用于自动化控制微软Office应用程序的编程语言。通过使用VBA,用户可以通过编写宏来实现Office应用程序的自动化操作,以提高工作效率。VBA可以使用Microsoft Office软件的各种对象、方法和属性来控制和操作文档、电子表格、数据库等等。通过VBA,用户可以自定义功能、编写复杂的逻辑、进行数据处理等等。 参考.chm是微软帮助文件的一种格式,扩展名为.chm。它包含了详细的技术内容、示例代码、API参考等等,用于帮助开发者了解和使用相关的技术。在ActiveX和VBA的参考.chm,你可以找到相关技术使用的说明、示例代码、用法示例等等。它是学习和使用ActiveX和VBA的重要工具之一。 通过阅读ActiveX和VBA参考.chm,开发者可以了解这两种技术的详细用法、语法规则、相关的类和方法等等。它可以帮助开发者快速上手,提高开发效率。总的来说,ActiveX和VBA参考.chm对于学习和使用ActiveX和VBA来说都是非常有帮助的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值