在工作表中添加ActiveX控件
2022年4月28日
作者: 来源:
本例中使用代码在工作表中添加的是ActiveX控件。 使用Add方法在工作表中添加ActiveX控件,如下面的代码所示。 #001 Sub AddObj() #002 Dim Obj As New OLEObject #003 On Error Resume Next #004 Sheet1.OLEObjects("MyButton").Delete #005 Set Obj = Sheet1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _ #006 Left:=108, Top:=72, Width:=108, Height:=27) #007 With Obj #008 .Name = "MyButton" #009 .Object.Caption = "新建的按钮" #010 .Object.Font.Size = 16 #011 .Object.ForeColor = &HFF& #012 End With #013 With ActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule #014 If .Lines(1, 1) <> "Option Explicit" Then #015 .InsertLines 1, "Option Explicit" #016 End If #017 If .Lines(2, 1) = "Private Sub MyButton_Click()" Then Exit Sub #018 .InsertLines 2, "Private Sub MyButton_Click()" #019 .InsertLines 3, vbTab & "MsgBox ""这是使用Add方法新建的按钮!""" #020 .InsertLines 4, "End Sub" #021 End With #022 End Sub 代码解析: AddOLEObject过程使用Add方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。 第3、4行代码为了避免在工作表中重复添加按钮控件,先删除工作表中的名称为“myButton”的按钮。 第5、6行代码,使用Add方法在向工作表中添加ActiveX控件中的命令按钮,Add方法应用于OLEObjects 对象的语法如下: expression.Add(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height) 其中参数expression是必需的,返回一个 OLEObjects 对象。 参数ClassType是可选的,创建的对象的程序标识符。如果指定了 ClassType参数,则忽略FileName参数和Link参数。 在本例中指定添加控件的程序标识符为“Forms.CommandButton.1”,即命令按钮控件。 参数Left和参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格 A1 的左上角或图表的左上角的坐标。 参数Width和参数Height是可选的,以磅为单位给出OLE对象的初始大小。 第8行代码,设置命令按钮的名称为“MyButton”。 第9行代码,设置命令按钮的文字为“新建的按钮” 第10行代码,设置命令按钮的文字的大小。 第11行代码,设置命令按钮的文字的颜色。 第13行到第21行代码,在工作表中写入新添加的命令按钮的单击事件代码。 ActiveX控件不能像窗体控件用OnAction属性来指定宏,需要使用CodeModule对象的InsertLines方法在工作表中插入代码。 应用于CodeModule对象的InsertLines方法的语法如下: object.InsertLines(line, code) 参数object是必需的,一个有效的对象。 参数line是必需的,用来指定要插入代码的位置。 参数code是必需的,要插入的代码。 第14行到第16行代码判断首行内容是否为要求变量声明,如不是则添加要求变量声明语句。 第17行到第20行代码判断是否已存在相同名称的过程,如不存在则使用InsertLines方法在工作表中插入代码。 运行AddOLEObject过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。 在工作表中添加ActiveX控件,还可以使用AddOLEObject方法,如下面的代码所示。 #001 Sub AddShapes() #002 Dim ShpBut As Shape #003 On Error Resume Next #004 Sheet1.OLEObjects("MyButton").Delete #005 Set ShpBut = Sheet1.Shapes.AddOLEObject(ClassType:="Forms.CommandButton.1", _ #006 Left:=108, Top:=72, Width:=108, Height:=27) #007 ShpBut.Name = "MyButton" #008 With ActiveWorkbook.VBProject.VBComponents(Sheet1.CodeName).CodeModule #009 If .Lines(1, 1) <> "Option Explicit" Then #010 .InsertLines 1, "Option Explicit" #011 End If #012 If .Lines(2, 1) = "Private Sub MyButton_Click()" Then Exit Sub #013 .InsertLines 2, "Private Sub MyButton_Click()" #014 .InsertLines 3, vbTab & "MsgBox ""这是使用AddOLEObject方法新建的按钮!""" #015 .InsertLines 4, "End Sub" #016 End With #017 End Sub 代码解析: AddShapes过程使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮和相应的代码。 第5、6行代码,使用AddOLEObject方法在向工作表中添加ActiveX控件中的命令按钮,AddOLEObject方法创建OLE对象,语法如下: expression.AddOLEObject(ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height) AddOLEObject方法参数与Add方法类似。 运行AddShapes过程,将在工作表中添加一个命令按钮和相应的代码,单击按钮显示一个消息框。
阅读:2018
上一则:在工作表中添加窗体控件
下一则:华润集团总部office培训圆满结束
|