近期,有同事非要在EXCEL里实现复选框显示/隐藏特定数行的功能,在帮助其实现过程中发现,很有必要了解 表单 控件和 ACTIVEX 控件的区分。

首先,要记住一个网址: http://www.excelhome.net/ ,可能做软件开发的会觉得这些内容很LOW,确实,我也这样感觉,因为现在有OA,有DB,有ERP,单纯的EXCEL应用时代已经是历史了。但是,如果有客户需要,也还是要满足的,我的同事也是我的工作客户。下面是一些区分:

表单控件是与早期版本的 Excel(从 Excel 5.0 版开始)兼容的原始控件。

适用于:在 XLM 宏工作表中使用。

在不使用 VBA 代码的情况下,引用单元格数据并与其进行交互。

向图表工作表中添加控件。

运行 :可以将现有宏附加到控件,也可以编写或录制新宏。当表单用户单击控件时,该控件会运行宏。

然而,不能将这些控件添加到用户表单中,不能使用它们控制事件,也不能修改它们以在网页中运行 Web 脚本。

ActiveX 控件

一种控件,向用户提供选项或 运行 使任务自动化的 宏或脚本 。可在 Microsoft Visual Basic for Applications 中编写控件的宏或在 Microsoft 脚本编辑器中编写脚本。

适用于:可用于 工作表表单 (使用或不使用 VBA 代码)和 VBA 用户表单 。通常,如果相对于表单控件所提供的灵活性,您的设计需要更大的灵活性,则使用

ActiveX 控件。ActiveX 控件具有大量可用于自定义其外观、行为、字体及其他特性的属性。用户与控件进行交互时,VBA 代码会随之运行以处理针对

该控件发生的任何事件。并非所有 ActiveX 控件都可以 直接用于工作表 ;有些 ActiveX 控件只能用于 Visual Basic for Applications ( VBA ) (Visual Basic

for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 用户表单

如果您尝试向工作表中添加这些特殊 ActiveX 控件中的任何一个控件,Excel 都会显示消息“不能插入对象”。

无法从 用户界面 将 ActiveX 控件添加到图表工作表。

无法将其添加到 XLM 宏工作表。

不能 像在表单控件中一样 指定 要直接从 ActiveX 控件运行的

表单控件可以和单元格关联,操作控件可以修改单元格的值,所以用于工作表,而

ACTIVEX控件虽然属性强大,可控性强,但不能和单元格关联,所以用于表单Form。




以组合框为例

外观上,他们是不一样的,创建完毕后如下图所示



ActiveX 控件  在设计模式下可以看到属性(如控件名,CAPTION),而表单控件的属性窗口和用户表单看到的是一样的,没有控件名之类设计用属性。

在代码方面,表单控件和ActiveX 控件引用的路径不一样。





  • Sub 表单控件()
  • Sheet1.Shapes("下拉框 1").ControlFormat.ListFillRange = "Sheet1!$F$2:$F$20"
  • End Sub
  • Sub ActiveX控件()
  • Sheet1.ComboBox1.List = [{1,2,3,4,5}]
  • End Sub
  •