Excel 2010中,“表单控件”和“ActiveX控件”有什么区别?

120

在使用Microsoft Excel 2010时,我注意到可以在文档中插入两种控件:表单控件ActiveX控件

enter image description here

它们之间有什么区别?


12
表单控件已经内置在Excel中。而ActiveX控件需要从单独的DLL文件中加载。你可以添加额外的ActiveX控件,但不能添加表单控件。 - Hans Passant
感谢@HansPassant!据我所知,我应该从表单控件开始,而不必依赖于ActiveX控件就可以完成工作。 - Rubens Mariuzzo
2
请查看我在此处提供的详细答案:Excel表单控件和ActiveX控件之间差异的概述 - ashleedawg
4个回答

111

Google上有很多关于这个的信息。正如Hans Passant所说,表单控件是内置在Excel中的,而ActiveX控件是单独加载的。

通常情况下,你会使用Forms控件,它们更简单。当基本的Forms控件无法完成工作时,可以使用ActiveX控件来实现更灵活的设计。

许多用户的计算机默认情况下不信任ActiveX,并且会将其禁用;有时需要手动将其添加到信任中心。ActiveX是一种基于微软技术的,据我所知,在Mac上不受支持。这也是您需要考虑的事情,如果您(或者您提供工作簿给的任何人)决定在Mac上使用它。

我一直在寻找这种答案/解释。现在我明白了Form Controls相对于ActiveX的优缺点。只要能完成工作,我将使用Form Controls。感谢Sam和@HansPassant。 - Rubens Mariuzzo
没问题 - 很高兴能帮忙。如果您对提供的答案感到满意,请记得将其标记为已解决,这样其他人就知道已经提供了答案。 - StoriKnow
没问题,我习惯耐心等待其他意见。 - Rubens Mariuzzo
2
@Sam,我认为你的回答非常有帮助。但也许你愿意在你的答案中再添加一件事情,这是我不得不通过艰难的方式才发现的。ActiveX控件有时会“表现不当”并自动更改大小。http://www.mrexcel.com/forum/excel-questions/393625-activex-controls-resizing-bug.html或http://blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2012/11/27/activex-and-form-controls-resize-themselves-when-clicked-doing-a-print-preview-or-resolution-changed.aspx - Ralph
1
有人在mrexcel.com的帖子中发布了一个链接,指向这个StackOverflow帖子excel-the-incredible-shrinking-and-expanding-controls,其中讨论了ActiveX控件的问题。 - Tim Joy T-Square Consulting
https://dev59.com/TlUL5IYBdhLWcg3wk4zK#50144021 - ashleedawg

31

重要的一点区别是,ActiveX控件显示为您可以在代码中使用的对象-尝试将ActiveX控件插入工作表中,打开VBA编辑器(ALT + F11),您将能够以编程方式访问该控件。您无法对窗体控件执行此操作(必须显式地将宏分配给每个控件),但是窗体控件使用起来比较容易。如果您只是做一些简单的事情,使用哪种控件都无所谓,但对于更高级的脚本,ActiveX具有更好的功能。

ActiveX也更加可定制化。


4
值得注意的是,ActiveX控件只适用于Windows系统,而表单控件可以在Windows和MacOS版本的Excel中使用。

-2
注意,在某些情况下,单击表单控件或Active X控件会为相同的宏提供两个不同的结果-这不应该是这种情况。我发现Active X更可靠。

17
如果您可以提供一个在使用ActiveX/Form控件时能够给出不同结果的宏,那么这就是一个答案。 - Jacques Gaudin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接