Excel和x27之间的差异;s表格控制及;ActiveX控件
为什么Excel中有两种类型的控件可用?(2个按钮、2个组合框、2个复选框等) 表单控件和ActiveX控件之间有什么区别?我应该用哪一个 我在网上找到的一些代码示例可以与我的控件一起使用,但其他的则不能。为什么Excel和x27之间的差异;s表格控制及;ActiveX控件,excel,vba,controls,activex,userform,Excel,Vba,Controls,Activex,Userform,为什么Excel中有两种类型的控件可用?(2个按钮、2个组合框、2个复选框等) 表单控件和ActiveX控件之间有什么区别?我应该用哪一个 我在网上找到的一些代码示例可以与我的控件一起使用,但其他的则不能。为什么 我如何处理每种类型,如何区分它们之间的差异 对于Excel可用的两种控件,存在着[永恒的]混乱-不同在线来源使用的术语对比加剧了这种混乱 这只是对表单控件和ActiveX控件之间差异的一个总体概述(基于帮助我最终找出差异的我的旧注释!)访问包含的链接,以获取关于每个控件的更详细信息,
我如何处理每种类型,如何区分它们之间的差异 对于Excel可用的两种控件,存在着[永恒的]混乱-不同在线来源使用的术语对比加剧了这种混乱 这只是对表单控件和ActiveX控件之间差异的一个总体概述(基于帮助我最终找出差异的我的旧注释!)访问包含的链接,以获取关于每个控件的更详细信息,包括代码和示例项目。☺ (改编自我原来的帖子-现已关闭)
概述:
- 有两种类型的控件:窗体控件和ActiveX控件:
- 两种类型的控件都可以在工作表上使用,但只有ActiveX控件可以在用户窗体上使用
- 表单控件是形状集合的一部分(与图形对象一样),因此被称为:工作表***
***形状(
***控件名
**>”)
- ActiveX控件基本上是工作表的一部分,因此被称为:
工作表***
***
*“>控制名称
- 这两种类型的控件都可以从工作表中创建、修改和删除,也可以使用VBA以编程方式创建、修改和删除。但是,使用VBA引用这两种类型的控件时,它们的语法略有不同
- 一些网站还讨论数据表。这只不过是一个专门为数据输入/操作而设计的用户表单,因此将它们称为(听起来更熟悉的)“数据输入用户表单”更有意义
- 办公文档偶尔也会将工作表作为表单引用。虽然这在技术上是正确的,但不要让它迷惑你。将“形式”一词视为一般意义上的词语:
两种类型的控件
(来源:)
控制可用性 下图显示了工作表和用户表单中通常可用的常用控件 其他因素可能影响控制可用性
- Office.com:
- Office.com:
- MSDN:
关于ActiveX控件和相关安全问题 ActiveX控件是VBA工具箱的扩展。您可以像使用任何标准内置控件(如复选框控件)一样使用ActiveX控件。将ActiveX控件添加到应用程序时,它将成为开发和运行时环境的一部分,并为应用程序提供新功能
- ActiveX控件实现为进程内服务器(通常是一个小对象),可在任何OLE容器中使用。请注意,ActiveX控件的完整功能仅在用于了解ActiveX控件的OLE容器中使用时可用
- 此容器类型称为控件容器或控件对象,可以使用控件的属性和方法操作ActiveX控件,并以事件的形式接收来自ActiveX控件的通知。下图演示了此交互:
(来源:和)
- 维基百科:
- 赛门铁克网站:
- 如何成为极客:
选项按钮(单选按钮) 在Excel中,这两种单选按钮实际上称为选项按钮。进一步混淆问题:
- 表单控件的默认名称是
OptionButton1
- ActiveX控件的默认名称为
选项按钮1
属性
,或者点击F4),因为ActiveX控件比更简单的表单控件有更多的选项
选项按钮和复选框可以绑定在一起(因此每次只能从组中选择一个选项),方法是将它们放置在共享的组框中
选择分组框控件,然后按住Ctrl键,同时选择要分组的每个其他控件。右键单击分组框控件并选择分组→ <代码>组
下面是前两个链接
Sub formControl_add()
'create form control
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.Shapes.AddFormControl(xlOptionButton, 25, 25, 100, 100)
.Name = "cOptionButton1" 'name control immediately (so we can find it later)
End With
End Sub
Sub formControl_modify()
'modify form control's properties
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes("cOptionButton1").Select
With Selection 'shapes must be Selected before changing
.Characters.Text = "wxyzabcd"
End With
End Sub
Sub formControl_delete()
'delete form control
Dim ws As Worksheet: Set ws = ActiveSheet
ws.Shapes("cOptionButton1").Delete
End Sub
Sub activexControl_add()
'create ActiveX control
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.OLEObjects.Add("Forms.CommandButton.1")
.Left = 25
.Top = 25
.Width = 75
.Height = 75
.Name = "xCommandButton1" 'name control immediately (so we can find it later)
End With
End Sub
Sub activexControl_modify()
' modify activeX control's properties
Dim ws As Worksheet: Set ws = ActiveSheet
With ws.OLEObjects("xCommandButton1").Object
.Caption = "abcxyz"
.BackColor = vbGreen
End With
End Sub
Sub activexControl_delete()
' delete activeX control
Dim ws As Worksheet: Set ws = ActiveSheet
ws.OLEObjects("xCommandButton1").Delete
End Sub
Sub ComboBox_addRemoveItems_FormControl()
Dim ws As Worksheet: Set ws = ActiveSheet
'add item to form control combo box
ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.AddItem "abcd"
'remove all items from from form control combo bo
ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.RemoveAllItems
End Sub
Sub ComboBox_addRemoveItems_ActiveXControl()
Dim ws As Worksheet: Set ws = ActiveSheet
'add items to ActiveX combo box
ActiveWorkbook.Sheets("Sheet1").ComboBox1.AddItem "abcd"
'remove all items from ActiveX combo box
ActiveWorkbook.Sheets("Sheet1").ComboBox1.Clear
End Sub