Excel VBA教程:在工作表上使用 ActiveX 控件

本主题包括了在工作表或图表工作表上使用 ActiveX 控件的特定信息。有关添加和处理控件的一般信息,请参阅在文档中使用 ActiveX 控件创建自定义对话框

在工作表上处理控件时,必须记住以下几点。

在使用无效的属性或方法之前,可通过激活工作表上的其他一些元素来避免该问题。例如,下列代码可对单元格区域排序:


Private Sub CommandButton1.Click
    Range("a1").Activate
    Range("a1:a10").Sort Key1:=Range("a1")
    CommandButton1.Activate
End Sub

用 Visual Basic 添加控件

在 Microsoft Excel 中,用 OLEObjects集合中的 OLEObject对象代表 ActiveX 控件(所有的 OLEObject对象也包含在 Shapes集合中)。若要用编程的方式向工作表添加 ActiveX 控件,请用 OLEObjects集合的 Add方法。下例向第一张工作表添加命令按钮。


Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
    Left:=10, Top:=10, Height:=20, Width:=100

通过 Visual Basic 使用控件属性

绝大多数情况下,Visual Basic 代码可用名称引用 ActiveX 控件。下例更改了控件“CommandButton1”的标题。


Sheet1.CommandButton1.Caption = "Run"

请注意,当在控件所在的工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。

若要更改在 Visual Basic 代码中所用的控件的名称,请先选定该控件,然后在“属性”窗口中设置控件的“(名称)”属性。

因为 ActiveX 控件也可用 OLEObjects集合中的 OLEObject对象代表,所以也可用该集合中的对象来设置控件的属性。下例设置了控件“CommandButton1”的左边位置。


Worksheets(1).OLEObjects("CommandButton1").Left = 10

没有显示为 OLEObject对象属性的控件属性可通过由 Object属性返回的实际控件对象来设置。下例设置了控件“CommandButton1”的标题。


Worksheets(1).OLEObjects("CommandButton1"). _
    Object.Caption = "run me"

因为所有的 OLE对象也是 Shapes集合的成员,所以也可用该集合设置若干控件的属性。下例对齐第一张工作表上的所有控件的左边缘。


For Each s In Worksheets(1).Shapes
    If s.Type = msoOLEControlObject Then s.Left = 10
Next

使用 Shapes 和 OLEObjects集合的控件名称

工作表上的 ActiveX 控件具有两个名称:包含控件的图形的名称(当查看工作表时,可在“名称”框中看到此名称);控件的代码名称(在“属性”窗口的“(名称)”右边的单元格中可看到此名称)。第一次向工作表中添加控件时,图形名称和代码名称是匹配的。但是,如果更改其中之一(图形名称或代码名称),另一个名称不会自动随之更改。

在控件的事件过程名称中使用的是控件代码名称,但是,当您从工作表的 Shapes 或 OLEObjects集合中返回控件时,必须使用图形名称而不是代码名称来通过名称引用控件。例如,假定要向工作表中添加一个复选框,其默认的图形名称和代码名称都是 CheckBox1。如果通过在“属性”窗口的“(名称)”旁边键入“chkFinished”而更改了控件代码名称,则在事件过程名称中必须使用“chkFinished”,但是您仍然需要使用 CheckBox1 来从 Shapes 或 OLEObject集合中返回控件,如下例所示。


Private Sub chkFinished_Click()
    ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub

上页:Excel VBA教程:设置控件属性 下页:Excel VBA教程:Application对象事件的用法

Excel VBA教程:在工作表上使用 ActiveX 控件

Excel VBA教程:Application对象事件的用法 Excel VBA教程:嵌入图表事件的用法
Excel VBA教程:在文档中使用 ActiveX 控件 Excel VBA教程:使用 Microsoft Excel对象事件的方法
Excel VBA教程:在窗体上使用 Microsoft Office Web 组件 Excel VBA教程:QueryTable对象事件的用法
Excel VBA教程:在 Visual Basic 中使用 Microsoft Excel 工作表函数 Excel VBA教程:工作簿对象事件
Excel VBA教程:处理三维区域 Excel VBA教程:处理图形(绘图对象)
Excel VBA教程:处理活动单元格 Excel VBA教程:Worksheet对象事件
Excel VBA教程:页眉和页脚的格式代码 Excel VBA教程:ActiveX 控件
Excel VBA教程:“帮助”主题不可用 Excel VBA教程:“帮助”主题不可用
Excel VBA教程:“帮助”主题不可用 Excel VBA教程:“帮助”主题不可用
Excel VBA教程:单元格错误值 Excel VBA教程:内置对话框参数列表
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号