ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9354|回复: 2

[分享] 表单控件和ACTIVEX控件有什么区别

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-12 13:09 | 显示全部楼层 |阅读模式
本帖最后由 little-key 于 2017-5-12 13:10 编辑

表单控件
表单控件是与早期版本的 Excel(从 Excel 5.0 版开始)兼容的原始控件。表单控件还适于在 XLM 宏工作表中使用。

如果您希望在不使用 VBA 代码的情况下轻松引用单元格数据并与其进行交互,或者希望向图表工作表 (图表工作表:工作簿中只包含图表的工作表。当希望单独查看图表或数据透视图(独立于工作表数据或数据透视表)时,图表工作表非常有用。)中添加控件,则使用表单控件。例如,在您向工作表中添加列表框控件并将其链接到某个单元格后,可以为控件中所选项目的当前位置返回一个数值。接下来,可以将该数值与 INDEX 函数结合使用以从列表中选择不同的项目。

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

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

ActiveX 控件(ActiveX 控件:一种控件,如复选框或按钮,向用户提供选项或运行使任务自动化的宏或脚本。可在 Microsoft Visual Basic for Applications 中编写控件的宏或在 Microsoft 脚本编辑器中编写脚本。)可用于工作表表单(使用或不使用 VBA 代码)和 VBA 用户表单。通常,如果相对于表单控件所提供的灵活性,您的设计需要更大的灵活性,则使用 ActiveX 控件。ActiveX 控件具有大量可用于自定义其外观、行为、字体及其他特性的属性。

您还可以控制与 ActiveX 控件进行交互时发生的不同事件。例如,您可以执行不同的操作,具体取决于用户从列表框控件中所选择的选项;还可以查询数据库以在用户单击某个按钮时用项目重新填充组合框。您还可以编写宏来响应与 ActiveX 控件关联的事件。表单用户与控件进行交互时,VBA 代码会随之运行以处理针对该控件发生的任何事件。

您的计算机还包含由 Excel 和其他程序安装的多个 ActiveX 控件,如 Calendar Control 12.0 和 Windows Media Player。

要点 并非所有 ActiveX 控件都可以直接用于工作表;有些 ActiveX 控件只能用于 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 用户表单。如果您尝试向工作表中添加这些特殊 ActiveX 控件中的任何一个控件,Excel 都会显示消息“不能插入对象”。

然而,无法从用户界面将 ActiveX 控件添加到图表工作表,也无法将其添加到 XLM 宏工作表。此外,您不能像在表单控件中一样指定要直接从 ActiveX 控件运行的宏。

以上材料来自:http://club.excelhome.net/thread-772361-1-1.html

一个主要区别就是表单控件可以和单元格关联,操作控件可以修改单元格的值,所以用于工作表,而ACTIVEX控件虽然属性强大,可控性强,但不能和单元格关联,所以用于表单Form。

01.jpg

我主要来说说在熟悉代码的区别:

以组合框为例

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

02.jpg

ActiveX 控件  有一个设置模式,而表单控件没有

在代码方面,一般表达控件需要使用shapes,而ActiveX 控件如在窗体上用的一样,输入后就有提示框,而且在代码控件中也可以找到。

03.jpg

04.jpg


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

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-29 11:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢,讲得真好。

TA的精华主题

TA的得分主题

发表于 2019-12-28 11:08 | 显示全部楼层
版主我这里有个问题,就是想用activeX控件控制单元格数值,但是我不知道怎么写代码。移步这个帖子http://club.excelhome.net/thread-1513823-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 17:30 , Processed in 0.048771 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表