您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > ExcelVBA教程
ExcelVBA教程:在工作表上使用ActiveX控件本主题包括了在工作表或图表工作表上使用ActiveX控件的特定信息。有关添加和处理控件的一般信息,请参阅在文档中使用ActiveX控件和创建自定义对话框。在工作表上处理控件时,必须记住以下几点。除ActiveX控件可用的标准属性之外,在MicrosoftExcel中还可使用ActiveX控件的下列属性:BottomRightCell、LinkedCell、ListFillRange、Placement、PrintObject、TopLeftCell和ZOrder。这些属性可用ActiveX控件的名称来设置和返回。下例滚动工作簿窗口,使CommandButton1位于窗口的左上角。Sett=Sheet1.CommandButton1.TopLeftCellWithActiveWindow.ScrollRow=t.Row.ScrollColumn=t.ColumnEndWith当ActiveX控件处于激活状态时,将禁用某些MicrosoftExcelVisualBasic方法和属性。例如,当某一控件处于激活状态时,就不能使用Sort方法,故下述按钮单击事件过程中的代码将无效(因为用户单击按钮后,该按钮将处于激活状态)。PrivateSubCommandButton1.ClickRange(a1:a10).SortKey1:=Range(a1)EndSub在使用无效的属性或方法之前,可通过激活工作表上的其他一些元素来避免该问题。例如,下列代码可对单元格区域排序:PrivateSubCommandButton1.ClickRange(a1).ActivateRange(a1:a10).SortKey1:=Range(a1)CommandButton1.ActivateEndSub当用户通过双击嵌入在其他应用程序的文档中的MicrosoftExcel工作簿来对其进行编辑时,该工作簿上的控件无法正常工作。如果用户用鼠标右键单击工作簿,然后选中快捷菜单上的“打开”命令,工作簿上的控件将正常工作。用MicrosoftExcel5.0/95工作簿文件格式保存MicrosoftExcel工作簿时,将丢失ActiveX控件信息。工作表上ActiveX控件的事件过程中的Me关键字引用的是工作表,而非控件。用VisualBasic添加控件在MicrosoftExcel中,用OLEObjects集合中的OLEObject对象代表ActiveX控件(所有的OLEObject对象也包含在Shapes集合中)。若要用编程的方式向工作表添加ActiveX控件,请用OLEObjects集合的Add方法。下例向第一张工作表添加命令按钮。Worksheets(1).OLEObjects.AddForms.CommandButton.1,_Left:=10,Top:=10,Height:=20,Width:=100通过VisualBasic使用控件属性绝大多数情况下,VisualBasic代码可用名称引用ActiveX控件。下例更改了控件“CommandButton1”的标题。Sheet1.CommandButton1.Caption=Run请注意,当在控件所在的工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。若要更改在VisualBasic代码中所用的控件的名称,请先选定该控件,然后在“属性”窗口中设置控件的“(名称)”属性。因为ActiveX控件也可用OLEObjects集合中的OLEObject对象代表,所以也可用该集合中的对象来设置控件的属性。下例设置了控件“CommandButton1”的左边位置。Worksheets(1).OLEObjects(CommandButton1).Left=10没有显示为OLEObject对象属性的控件属性可通过由Object属性返回的实际控件对象来设置。下例设置了控件“CommandButton1”的标题。Worksheets(1).OLEObjects(CommandButton1)._Object.Caption=runme因为所有的OLE对象也是Shapes集合的成员,所以也可用该集合设置若干控件的属性。下例对齐第一张工作表上的所有控件的左边缘。ForEachsInWorksheets(1).ShapesIfs.Type=msoOLEControlObjectThens.Left=10Next使用Shapes和OLEObjects集合的控件名称工作表上的ActiveX控件具有两个名称:包含控件的图形的名称(当查看工作表时,可在“名称”框中看到此名称);控件的代码名称(在“属性”窗口的“(名称)”右边的单元格中可看到此名称)。第一次向工作表中添加控件时,图形名称和代码名称是匹配的。但是,如果更改其中之一(图形名称或代码名称),另一个名称不会自动随之更改。在控件的事件过程名称中使用的是控件代码名称,但是,当您从工作表的Shapes或OLEObjects集合中返回控件时,必须使用图形名称而不是代码名称来通过名称引用控件。例如,假定要向工作表中添加一个复选框,其默认的图形名称和代码名称都是CheckBox1。如果通过在“属性”窗口的“(名称)”旁边键入“chkFinished”而更改了控件代码名称,则在事件过程名称中必须使用“chkFinished”,但是您仍然需要使用CheckBox1来从Shapes或OLEObject集合中返回控件,如下例所示。PrivateSubchkFinished_Click()ActiveSheet.OLEObjects(CheckBox1).Object.Value=1EndSub
本文标题:ExcelVBA教程
链接地址:https://www.777doc.com/doc-2870683 .html