VBA编程之对象模型_第1页
VBA编程之对象模型_第2页
VBA编程之对象模型_第3页
VBA编程之对象模型_第4页
VBA编程之对象模型_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VBA编程之对象模型常用对象概述您可能知道程序设计的基本过程,了解VBA的基本数据类型,会使用程序控制语句,运用过一些程序设计的基本方法,还编写过一些程序,但如果您想自动化操作和控制Excel应用程序,则必须要与Excel的对象模型所提供的对象进行交互,因为Excel应用程序本身就是通过这些对象组织在一起的。Excel的对象模型提供了数百个对象,当您在使用Excel时,有些对象可能会经常用到,而另外一些对象则不常用。一般来说,对Excel应用程序本身的一些设置、对工作簿和工作表的操作、单元格和单元格区域的操作、以及图表的操作等,是我们经常要涉及到的。因此,在学习Excel的对象模型时,我们可以

2、先集中研究和探讨与这些操作相关的对象、方法、属性和事件,以及它们的使用,以此来逐步加深对Excel对象模型的认识和理解直至全面掌握。 这些对象包括: Application 对象 Workbook 对象 Worksheet 对象 Range 对象在您使用Excel时,大部分的工作都是以这四类对象及它们的成员为中心的。Application对象代表整个Excel应用程序,而每个Workbook对象则包含一个Worksheet对象的集合,Range对象则代表单个单元格或单元格区域。在前面的一系列文章中,我们详细讲解了集合和对象的概念。在本文中,将简略地描述这些对象及它们的部分方法和属性,使您对它们

3、建立一个初步的印象。后面的一系列文章将对它们进行详细的解析,帮助您应用它们。Application对象Excel Application对象代表Excel应用程序本身,该对象中的一些成员关系到您的应用程序行为的正确与否。下面分别予以说明。Application对象中有一些属性控制着Excel的状态和外观。例如,我们经常在程序中看到或用到的ScreenUpdating属性,它的默认值为True,这使得Excel在调用每个方法后都会更新屏幕,极大地影响了程序的运行速度,因此,您可以在代码运行前将其设置为False,但是一定要记住在程序运行结束前将其设置为True,以恢复它的默认状态,Excel不会

4、为您自动恢复它。此外,Cursor属性控制着鼠标指针的外观;EditDirectlyInCell属性决定您是否可以直接在工作表中编辑单元格,否则您将只能在工作表的公式栏中编辑单元格;如果您把FixedDecimal属性设置为True,则您可以利用FixedDecimalPlaces属性来确定数值数据的小数位数;设置Interactive属性可以决定您是否可以使用鼠标和键盘,若您将Interactive属性的值设置为False,则禁用鼠标和键盘,但在程序处理完后您一定要将其值重新设置为True;若要决定当您按下Enter键后单元格的移动方向,您可以将MoveAfterReturnDirectio

5、n属性的值设为xlDown(向下移动)、xlToLeft(向左移动)、xlToRight(向右移动)、xlUp(向上移动)。有一些Application对象的属性可以返回对象。例如,ActiveCell属性返回活动窗口中当前活动单元格的引用;Sheets属性返回活动工作簿中Sheet对象的集合;Workbooks属性则返回当前所有打开的工作簿的Workbook对象的集合。Application对象也提供了许多允许您执行操作的方法。例如,Calculate方法将允许您强制重新计算所有打开的工作簿、或者是特定工作簿、或者是特定的范围。用Application对象所提供的属性和方法,您还可以处理Ex

6、cel文件。例如,DefaultFilePath属性用来获取或设置用于加载和保存Excel文件的路径;FileDialog属性返回FileDialog对象,允许您选择一个文件并将其打开、或者选择一个文件的位置并保存当前工作簿、或者选择一个文件夹、或者选择一个文件名。此外,Application对象还提供了GetOpenFileName和GetSaveAsFileName方法允许您选择一个要打开的文件的文件名。Application对象还有一些专有的成员。例如,WorksheetFunction属性返回的对象提供了Excel工作表函数,这些函数是VBA函数中所没有的;Windows属性允许您可以

7、打开、关闭和排列Excel对象窗口。Application对象除了提供属性和方法外,它还拥有大量的事件。例如,当任何一个表被激活时,会产生SheetActivate事件;当任何工作表中的单元格发生变化时,SheetChange事件会发生;当工作表上的选区改变时,SheetSelectionChange事件会发生;若您停用任何工作表,则SheetDeactivate事件会发生。同时,Application对象也提供了各种处理Window对象的行为的事件。例如,当任何窗口被激活时,WindowActivate事件都会发生;当任何窗口被停用时,WindowDeactivate事件会发生。此外,App

8、lication对象还提供了当与任何Workbook对象交互时会发生的事件,例如,NewWorkbook事件发生在创建一个新的工作簿时;当任何工作簿被停用时,WorkbookDeactivate事件会发生。Workbook对象Workbook对象代表了Excel中的一个工作簿,而在上面所介绍的Application对象中的许多属性也适用于特定的工作簿。Workbook对象提供了大量的属性,其中一些是我们经常要用到的。例如,Name属性返回工作簿的名称,FullName属性返回工作簿完整的路径名称,包括工作簿文件名,而Path属性则只返回工作簿路径部分。又如,Workbook对象有一个Sheet

9、s属性,返回一个Sheet对象,该对象包含Sheet对象集合,其中每个对象可以是Worksheet对象,也可以是Chart对象。Workbook对象也提供了大量的方法,其中您最有可能使用的方法有:Activate方法激活一个工作簿,并且选择工作簿中的第一个工作表;Close方法关闭一个指定的工作簿,可以选择是否保存对工作簿的修改;Protect方法和UnProtect方法允许您保护或取消保护工作簿;Save方法用于保存工作簿;SaveAs方法保存工作簿并允许您指定名称、文件格式、路径等;SaveCopyAs方法将工作簿的一个副本保存到文件中。Worksheet对象Worksheet对象代表了工

10、作簿中的工作表,同样,它也提供了大量的成员,使我们能对工作表进行操作。它的大多数属性、方法和事件与Application对象或Workbook对象所提供的成员的相同或相似。Range对象Range对象代表工作表中的单元格或单元格区域。您在Excel中最常使用的就是Range对象,直接面对或操作的也是它。例如,您对Excel中的单元格或单元格区域进行操作,都需要将其设置为一个Range对象,然后使用该Range对象的方法和属性,以完成对单元格或单元格区域的操作。基本上,对Excel的大部分操作都会涉及到Range对象,可见Range对象是很重要的。Range对象用途广泛,表达方式也灵活多样。譬如

11、,您可以对所选择的区域进行管理,可以在代码中引用Range对象所表示的区域或单元格,您甚至可以将各种技术组合起来,完成Excel应用程序现有功能所不可能完成的工作。常用对象的集合正如前面的文章所说,集合是指包含一组相似的或相关的对象的对象。有了集合,我们就可以将一组相似或相关的对象当作单一的对象来引用,并且可以很方便地操作集合中的某一个对象。通常,集合的名字都是单词的复数形式。例如,Workbooks集合表示当前打开的所有Workbook对象的集合,Worksheets集合表示指定工作簿或当前工作簿中所有的Worksheet对象,Sheets集合不仅包含Workbook对象,也包含Chart对

12、象。同时,集合也是某一对象的属性,请您细细体味这句话。结语好了,这篇文章也该结尾了。您看看,即使是最常用的对象,也涉及到如此繁杂的内容,但这些是我们必须要掌握和精通的,至少作为一名ExcelVBA编程人员应该如此。我们使用对象,是通过设置对象的属性、或者获取对象的属性、或者使用对象的方法、或者应用对象的事件,来对对象进行操作,从而操作Excel的。在接下来的文章中,我将通过示例对这些对象进行尽可能详细全面的介绍和总结归纳。VBA中常用对象的访问(一)1.Range(单元格)对象一个Range对象代表一个单元格、一行、一列、包含一个或者更多单元格区(可以为连续的单元格,也可以是不连续的单元格)中

13、选定的单元格,或者是多张工作表中的一组单元格。引用方式(1):使用Range属性,格式如下:Range(Cell1,Cell2),其中Cell1是必需的,必须为A1样式引用的宏语言,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号)。也可包括美元符号(即绝对地址,如“$A$1”)。可在区域中任一部分使用局部定义名称,如Range("A2:LastCell"),其中LastCell为已定义的单元格区域名称;参数Cell2是可选的。区域左上角和右下角的单元格。例子:Sub RngSelect()ActiveSheet.Range("A2:F4,B

14、1:C5").SelectEnd Sub运行后,当前活动表的以下区域被选中。如下图:(2):使用Cells属性返回一个Range对象,格式如下:Cells(RowIndex, ColumnIndex), 两个参数都是可选的,RowIndex->引用区域中行的序号, ColumnIndex->引用区域中列的序号。如果缺省参数,Cells属性返回引用对象的所有单元格。Cells属性的参数可以使用变量,因此经常应用于在单元格区域中循环。例子:Sub CellSelect()Dim iCell As IntegerFor iCell = 1 To 30 Step 2ActiveS

15、heet.Cells(iCell, 1).Value = iCellNext iCellEnd Sub运行后,当前活动工作表的A1:A30单元格中奇数行填入序号,这个是由循环决定的。(3)使用offset属性,返回一个基于引用的Range对象的单元格区域,格式如下:expression.Offset(RowOffset, ColumnOffset),参数expression是必需的,其返回值为一个Range对象。RowOffset参数是可选的,分别表示区域偏移的的行数(正值、负值或0)。正值表示向下偏移,负值表示向上偏移,默认值为0。ColumnOffset参数是可选的,分别表示区域偏移的的行

16、数(正值、负值或0)。正值表示向右偏移,负值表示向左偏移,默认值为0。例子:Sub OffsetSelect()Sheet1.Range("A1:C3").Offset(2, 3).SelectEnd Sub运行后,显示选中单元格偏移向下两行,向右偏移三列。(4)使用Resize属性调整指定区域的大小,并返回调整大小后的单元格区域,格式:expression.Resize(RowSize, ColumnSize),其中expression是必选参数,返回要调整大小的Range对象。参数RowSize是可选的,新区域中的行数,缺省时表示该区域中的行数不变。参数ColumnSi

17、ze是可选的,新区域中的列数,缺省时表示该区域中的列数不变。例子:Sub Resize()MsgBox "这是原始区域"Sheet1.Range("A2:C5").SelectMsgBox "调整后的区域"Sheet1.Range("A2:C5").resize(3, 2).SelectEnd Sub运行后,当点击第一个msgbox的确定后,选择的为原始的区域:然后弹出第二个msgbox确定后,选择的为通过调整后的区域:(5)使用Union方法,将多个非连续区域连接起来成为一个区域,从而可以实现对多个连续区域的操作

18、。格式:expression.Union(Arg1, Arg2, .),参数expression是可选参数,返回一个Application对象,参数Arg1、Arg2是必需的,至少要指定两个Range对象。例子:Sub UnionSelect()ActiveWorkbook.Union(ActiveSheet.Range("A1;D4"), _ActiveSheet.Range("E3:H8").SelectEnd Sub-这段代码调试有问题,目前未找到答案。(6)快捷记号,将A1引用样式或命名区域名称使用方括号括起来,作为Range属性的快捷方式,这样

19、就不用键入单词“Range”或使用引号。例子:Sub FastMark()A1:A5 = 3End Sub这是使用Fastmark过程使用快捷记号为单元格区域赋值。运行后,当前活动工作表的A1:A5单元格赋值为3。(7)使用UsedRange属性返回指定工作表上已使用单元格组成的区域。例子:Sub UseSelect()End Sub运行后发现, UseSelect过程使用UsedRange属性选择工作表上已使用单元格组成的区域,包括空单元格(8)使用CurrentRegion属性返回指定工作表上当前的区域。例子:Sub CurrentSelect()Sheet1.Range("A4

20、").CurrentRegion.SelectEnd Sub运行后,CurrentSelect过程使用CurrentRegion属性选择工作表上A4单元格当前的区域。VBA中常用对象的访问(二) 引用方法介绍1.Select方法:一般使用Select方法选定单元格或者单元区域,语法如下:expression.Select(Replace)参数expression是必需的,表示一个有效的对象,参数Replace是可选的,要替换的对象。注:使用Select方法选定单元格时,单元格所在的工作表必需为活动工作表,所以要先使用Activate方法使作用对象成为活动工作表,否则Select方法有

21、可能出错。例子:Sub RngSelect()Sheet2.ActivateSheet2.Range("A6:C4").SelectEnd Sub运行结果选中Sheet2工作表中的A6至C4的单元格。2.使用Goto方法,使用Goto方法无需使单元格所在的工作表成为活动工作表,Goto方法选定任意工作簿中的任意区域或任意Visual Basic过程,并且如果该工作簿未处于活动状态,就激活该工作簿,语法是:expression.Goto(Reference,Scroll),参数expression是必需的,返回一个Application对象。参数Reference是可选的,V

22、ariant类型,指定目标。可以是Range对象、包含R1C1-样式记号的单元格引用的字符串或包含Visual Basic过程名的字符串。如果省略本参数,目标将是最近一次用Goto方法选定的区域。参数Scroll是可选的,Variant类型,如果该值为True,则滚动窗口直至目标区域的左上角单元格出现在窗口的左上角。如果该值为False,则不滚动窗口。默认值为False。 例子:Sub RngGoto()Application.Goto Reference:=Sheet1.Range("A1:B10"), scroll:=True End Sub运行后,显示A1:B10单元

23、格区域被选定,并滚动工作表以显示该单元格。3.使用Range对象的End属性,可以取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等。End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格,等同于按按键<End+向上键>、<End+向下键>、<End+向左键>或<End+向右键>,语法如下:expression.End(Direction),参数expression是必需的,一个有效的对象。参数Direction是可选的,所要移动的方向,可以为如图所示的XlDirection 常量之一。常量 值 描述xlDown -4121 向下xlToRight -4161 向右xlToLeft -4159 向左xlUp -41

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论