浙江省普通高中选修课网络课程EXCELVBA编程入门第五章:认识ExcelVBA对象5.2ExcelVBA常用对象及应用浙江省普通高中选修课网络课程EXCELVBA编程入门一、ExcelVBA中常用对象四个对象:1、Application对象2、Workbook对象3、Worksheet对象4、Range对象实战:完善“制作成绩条”宏浙江省普通高中选修课网络课程EXCELVBA编程入门二、Application对象Application对象是Excel对象模型的最上部的对象,代表了Excel应用程序本身。Application对象提供了大量属性、方法和事件,用来操作Excel程序。浙江省普通高中选修课网络课程EXCELVBA编程入门二、Application对象因为Application对象是Excel对象模型的最顶端对象,逻辑上所有Excel对象都需要使用Application对象来引用。你可以使用Application属性返回Application对象。获取一个Application对象后,如需访问它下面的对象,可以在对象模型层级中往下移动。例如要引用第一个工作薄中的第一个工作表的“A1”单元格,并将“A1”单元格内容设为66,我们可以这么做:Application.Workbooks(1).Worksheets(1).Cells(1,1)=66浙江省普通高中选修课网络课程EXCELVBA编程入门二、Application对象Application对象有许多属性,方法,事件可以使用。下面的几个示例代码作为参考。‘功能:显示程序名字。Application.Name‘功能:保存所有打开的工作簿,然后退出MicrosoftExcel。ForEachwInApplication.Workbooksw.SaveNextwApplication.Quit浙江省普通高中选修课网络课程EXCELVBA编程入门三、【Workbook】对象代表MicrosoftExcel工作簿。Workbook对象是Workbooks集合的成员。Workbooks集合包含MicrosoftExcel中所有当前打开的Workbook对象。浙江省普通高中选修课网络课程EXCELVBA编程入门Application对象Workbooks集合Sheets集合Range集合WorkbookWorkbookWorkbookWorksheetWorksheetRange对象Range对象Range对象其它对象其它对象Application对象是顶级对象,该对象下又包括许多其它对象和集合,我们可以把集合也看作是对象,在集合中又包括许多相同的对象。浙江省普通高中选修课网络课程EXCELVBA编程入门返回Workbook对象的属性可用Workbooks(index)(其中index为工作簿名称或编号)返回单个Workbook对象。下例激活第一个工作簿。1、Workbooks属性Workbooks(1).Activate编号指示创建或打开工作簿的顺序。浙江省普通高中选修课网络课程EXCELVBA编程入门返回Workbook对象的属性Name属性返回工作簿名称。不能用该属性设置名称;如果需要更改名称,应当用SaveAs方法以其他名称保存工作簿。下例激活工作簿“Cogs.xls”中的工作表“Sheet1”(该工作簿必须已在MicrosoftExcel中打开)。1、Workbooks属性Workbooks(Cogs.xls).Worksheets(Sheet1).Activate浙江省普通高中选修课网络课程EXCELVBA编程入门返回Workbook对象的属性ActiveWorkbook属性返回当前处于活动状态的工作簿。下例设置活动工作簿的作者名称。2、ActiveWorkbook属性ActiveWorkbook.Author=JeanSelva浙江省普通高中选修课网络课程EXCELVBA编程入门返回Workbook对象的属性ThisWorkbook属性返回VisualBasic代码正在运行的工作簿。在绝大多数情况下,这也就是活动工作簿。然而,如果VisualBasic代码是加载宏的一部分,那么ThisWorkbook属性就不会返回活动工作簿。在这种情况下,活动工作簿是调用加载宏的工作簿,而ThisWorkbook属性将返回该加载宏工作簿。3、ThisWorkbook属性‘创建一个新的工作簿Workbooks.Add‘关闭所有打开的工作簿Workbooks.Close‘打开一个现有的工作簿Workbooks.OpenC:\Workbook.xls浙江省普通高中选修课网络课程EXCELVBA编程入门四、Worksheet对象Worksheet对象代表一张工作表。Worksheet对象是Worksheets集合的成员。Worksheets集合包含工作簿中所有的Worksheet对象。浙江省普通高中选修课网络课程EXCELVBA编程入门返回Worksheet对象的属性可用Worksheets(index)(其中index为工作表编号或名称)返回单个Worksheet对象。例如隐藏活动工作簿中的第一张工作表。可采用下列代码:1、Worksheets属性Worksheets(1).Visible=False工作表编号指示该工作表在工作簿的标签栏上的位置。工作表的名称显示在工作表的标签上。使用Name属性可设置或返回工作表的名称。浙江省普通高中选修课网络课程EXCELVBA编程入门返回Worksheet对象的属性当工作表处于活动状态时,可用ActiveSheet属性来引用它。下例使用Activate方法激活工作表Sheet1,将页方向设置为横向,然后打印该工作表。2、ActiveSheet属性Worksheets(Sheet1).ActivateActiveSheet.PageSetup.Orientation=xlLandscapeActiveSheet.PrintOut浙江省普通高中选修课网络课程EXCELVBA编程入门五、Range对象Range对象是Excel应用程序中最经常使用的对象。在操作Excel内的任何区域之前,都需要将其表示为一个Range对象,然后使用该Range对象的方法和属性。基本上来说,一个Range代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域。浙江省普通高中选修课网络课程EXCELVBA编程入门(一)、返回Range对象的属性和方法当可用Range(arg)(其中arg为区域名称)来返回代表单个单元格或单元格区域的Range对象。下例将单元格A1中的值赋给单元格A5。1、Range属性Worksheets(Sheet1).Range(A5).Value=Worksheets(Sheet1).Range(A1).ValueWorksheets(1).Range(Criteria).ClearContents下例清除区域Criteria中的内容。浙江省普通高中选修课网络课程EXCELVBA编程入门可用Cells(row,column)(其中row为行号,column为列标)返回单个单元格。下例将单元格A1赋值为24。2、Cells属性Worksheets(1).Cells(1,1).Value=24ActiveSheet.Cells(2,1).Formula==Sum(B1:B5)下例设置单元格A2的公式。(一)、返回Range对象的属性和方法浙江省普通高中选修课网络课程EXCELVBA编程入门可用Range(cell1,cell2)返回一个Range对象,其中cell1和cell2为指定起始和终止位置的Range对象。下例设置单元格区域A1:J10的边框线条的样式。3、Range和CellsWithWorksheets(1).Range(.Cells(1,1),_.Cells(10,10)).Borders.LineStyle=xlThickEndWith注意每个Cells属性之前的句点。如果前导的With语句应用于该Cells属性,那么这些句点就是必需的。本示例中,句点指示单元格处于第一张工作表上。如果没有句点,Cells属性将返回活动工作表上的单元格。(一)、返回Range对象的属性和方法浙江省普通高中选修课网络课程EXCELVBA编程入门可用Offset(row,column)(其中row和column为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。下例选定位于当前选定区域左上角单元格的向下三行且向右一列处的单元格。由于必须选定位于活动工作表上的单元格,因此必须先激活工作表。4、Offset属性Worksheets(Sheet1).ActivateSelection.Offset(3,1).Range(A1).Select(一)、返回Range对象的属性和方法浙江省普通高中选修课网络课程EXCELVBA编程入门可用Union(range1,range2,...)返回多块区域,即该区域由两个或多个连续的单元格区域所组成。下例创建由单元格区域A1:B2和C3:D4组合定义的对象,然后选定该定义区域。5、Union方法Dimr1AsRange,r2AsRange,myMultiAreaRangeAsRangeWorksheets(Sheet1).ActivateSetr1=Range(A1:B2)Setr2=Range(C3:D4)SetmyMultiAreaRange=Union(r1,r2)myMultiAreaRange.Select(一)、返回Range对象的属性和方法浙江省普通高中选修课网络课程EXCELVBA编程入门Activate方法Activate方法激活单个或多个单元格,使其成为当前活动单元格,例如:Worksheets(Sheet1).Range(a1).Activate(二)、Range对象常用的属性和方法Address方法可以使用Address方法获取一个Range的引用地址,例如“A1”,在实际编程中,Address方法非常有用。例如:MsgBoxActiveCell.Address浙江省普通高中选修课网络课程EXCELVBA编程入门Cells属性返回一个Cells集合对象,包含所有的单元格,可以使用:Cells(行,列)MsgBoxWorksheets(Sheet2).Range(a3.d12).Cells.Count(二)、Range对象常用的属性和方法Clear方法清除Range内的一切内容,包括注释和格式。Worksheets(Sheet2).Range(a3.d12).Clear浙江省普通高中选修课网络课程EXCELVBA编程入门ClearFormats方法清除Range内的格式。(二)、Range对象常用的属性和方法Column和Row属性返回Range的第一列或行,例如:MsgBoxWorksheets(Sheet2).Range(b3.d12).ColumnMsgBoxWorksheets(Sheet2).Range(b3.d12).Row返回2,因为第一列是B。返回3,因为第一行是3。浙江省普通高中选修课网络课程EXCELVBA编程入门Columns和Rows属性返回Range的列和行,通过其Count属性可以获取行数或列数。在使用For循环遍历时,就可以使用此属性,获得Range对象的大小,然后使用Cells属性,获取各个单元格的具体值,例如:通过Columns和Rows属性获取了Range的大小,循环给“C1:H26”这个Range赋值。DimiAsLong,jAsLongDimrngAsRangeSetrng=ActiveSheet.Range(C1:H26)WithrngFori=1To.Columns.CountForj=1To.Rows.Count.Cells(j,i).Value=j&&iNextjNextiEndWith(