Excel和x27之间的差异;s表格控制及;ActiveX控件

Excel和x27之间的差异;s表格控制及;ActiveX控件,excel,vba,controls,activex,userform,Excel,Vba,Controls,Activex,Userform,为什么Excel中有两种类型的控件可用?(2个按钮、2个组合框、2个复选框等) 表单控件和ActiveX控件之间有什么区别?我应该用哪一个 我在网上找到的一些代码示例可以与我的控件一起使用,但其他的则不能。为什么 我如何处理每种类型,如何区分它们之间的差异 对于Excel可用的两种控件,存在着[永恒的]混乱-不同在线来源使用的术语对比加剧了这种混乱 这只是对表单控件和ActiveX控件之间差异的一个总体概述(基于帮助我最终找出差异的我的旧注释!)访问包含的链接,以获取关于每个控件的更详细信息,

为什么Excel中有两种类型的控件可用?(2个按钮、2个组合框、2个复选框等)

表单控件和ActiveX控件之间有什么区别?我应该用哪一个

我在网上找到的一些代码示例可以与我的控件一起使用,但其他的则不能。为什么


我如何处理每种类型,如何区分它们之间的差异

对于Excel可用的两种控件,存在着[永恒的]混乱-不同在线来源使用的术语对比加剧了这种混乱

这只是对表单控件和ActiveX控件之间差异的一个总体概述(基于帮助我最终找出差异的我的旧注释!)访问包含的链接,以获取关于每个控件的更详细信息,包括代码和示例项目。☺

(改编自我原来的帖子-现已关闭)


概述:
  • 有两种类型的控件:窗体控件和ActiveX控件:

    • 两种类型的控件都可以在工作表上使用,但只有ActiveX控件可以在用户窗体上使用

    • 表单控件是形状集合的一部分(与图形对象一样),因此被称为:工作表***
      形状(
      ***
      控件名
      ***
      ”)
      **>

    • ActiveX控件基本上是工作表的一部分,因此被称为:
      工作表***
      ***
      控制名称
      *“>

    • 这两种类型的控件都可以从工作表中创建、修改和删除,也可以使用VBA以编程方式创建、修改和删除。但是,使用VBA引用这两种类型的控件时,它们的语法略有不同

  • 一些网站还讨论数据表。这只不过是一个专门为数据输入/操作而设计的用户表单,因此将它们称为(听起来更熟悉的)“数据输入用户表单”更有意义

  • 办公文档偶尔也会将工作表作为表单引用。虽然这在技术上是正确的,但不要让它迷惑你。将“形式”一词视为一般意义上的词语:


两种类型的控件
  • 表单控件

  • ActiveX控件

  • 两者的外观、行为和控制方式类似,但不完全相同。(列表)

    例如,让我们比较两种类型的组合框。在某些编程语言中,可比较的控件称为“下拉菜单”或“下拉列表”。在Excel中,我们有一个“表单控件组合框”,和一个“ActiveX控件组合框”:

    (单击图像以放大。)

    ☆ “默认名称”适用于手动创建的控件。以编程方式创建的控件没有(或需要)默认名称,因此应在创建时立即指定一个默认名称


    (来源:)


    控制可用性 下图显示了工作表和用户表单中通常可用的常用控件

    其他因素可能影响控制可用性

    • 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