相对而言,Excel的基础结构为工作表中的单元格区域。因此,Excel的对象层次结构更清晰,其层次结构为:Application对象—Workbook对象—Worksheet对象—Range对象。其中,Workbook对象和Worksheet对象均具有集合对象。
因此,要准确获得第一个工作簿的第一个工作表中的A1单元格的值的代码为:
Application.Workbooks(1).Worksheets(1).Range("A1").Value
在本节,我们将对Excel对象模型中的常用对象进行说明。
1.Application对象
与Word相同,Excel的Application对象就是Excel应用程序本身,为Excel中的顶级对象[2]。该对象具有丰富的属性和方法,这些属性包括Excel本身的外观、路径、用户名等。更重要的是,如果需要准确引用下属对象,最顶层的引用为Application。
Excel的Application对象的属性与说明见表24-5:
表24-5 Excel中Application对象的属性与说明
(续上表)
对单元格的访问一般不用Cells,而用Range对象。
Application对象的“WorksheetFunction”属性,提供了调用任何工作表函数的方法。例如,下列代码使用工作表函数Average( )获得单元格B1:B9的均值:
Set TheRange = Worksheets("Sheet1").Range("B1:B9")
TheAverage = Application.WorksheetFunction.Average(TheRange)
程序中可以省略关键字“WorksheetFunction”,直接用“Application.Average( )”形式。
2.Workbooks/Workbook对象
一个Workbook对象即一个Excel文件,当前打开的工作簿构成了工作簿集合Workbooks。
(1)Workbooks/Workbook对象的属性和说明见表24-6:
表24-6 Excel中Workbooks/Workbook对象的属性与说明
(2)常用的方法有:
Wookbooks.Add方法:新建一个工作簿,并将其加入工作簿集合。新建工作簿为当前活动工作簿。
Workbook.Activate方法:激活某个打开的工作簿。
如果打开了若干个工作簿,下列代码激活工作簿“工作簿3.xlsx”中的第一个窗口:
Workbooks("工作簿3.xlsx").Activate
Workbook.Close方法:关闭工作簿对象。
Workbooks.Open方法:打开工作簿并将打开的工作簿纳入集合。
例如,下列代码打开名为“Analysis.xlsx”的工作簿:
Workbooks.Open “Analysis.xlsx”
Workbook.Protect方法:保护工作簿使其不被修改。
Workbook.Save方法:保存工作簿。
Workbook.SaveAs方法:将工作簿另存为。
Workbook.CopyAs方法:将工作簿保存为副本文件,但打开的工作簿不受影响。
Workbook.UnProtect方法:取消被保护的工作簿的保护。
(3)工作簿的常用事件有:
BeforeClose事件:关闭之前发生的事件。
BeforePrint事件:打印之前发生的事件。
NewSheet事件:新增工作表时发生的事件。
Open事件:打开工作簿时发生的事件。
SheetActivate事件:激活工作表时发生的事件。
例如,使用下列代码新建一个工作簿并将其另存为以格式“yyyy-mm-dd”年月日开头的“工作簿.xlsx”
3.Worksheets/Worksheet对象
代表Excel工作表的对象为Worksheet对象,Worksheets对象往往是指某一工作簿中的工作表集合。
温馨提示
Excel还提供了一个Sheets集合对象,该集合中的每个成员都是Worksheet对象或Chart对象,其属性和方法也相同。
(1)Worksheets/Worksheet对象的相关属性与说明见表24-7 :
表24-7 Excel中Worksheets/Worksheet对象的属性与说明
温馨提示
用代码赋值“SheetObject.Visible = xlSheetVeryHidden”隐藏的工作表,在Excel应用程序中无法取消隐藏,只能用使用代码设置Visible的属性为“True”来取消。
(2)常用的方法有:
Worksheets.Add方法:新建工作表、图表。新建的工作表成为活动工作表。
Worksheet.Activate方法:激活一个工作表。
Worksheet.Copy方法:复制工作表对象到某个位置或到一个新建工作簿内。
Worksheet.Delete方法:删除工作表对象。删除前激活一个对话框,询问用户是否需要删除。如果单击“取消”则不执行删除,如果单击“删除”则执行删除。
Worksheet.Move方法:将工作表移动到其他位置。
Worksheet.Paste方法:将剪贴板中的内容粘贴到工作表。
Worksheet.Protect方法:保护工作表使其不能被修改。
Worksheet.Select方法:选中工作表。
Worksheet.Unprotect方法:取消对工作表的保护。(www.xing528.com)
(3)工作表的常用事件:
Activate事件:激活工作表、图表或者嵌入式图表时发生的事件。
BeforeDoubleClick事件:双击工作表前发生的事件。
此外,我们在这里列举三种在现实中常见的实例:
(1)实例1:新增工作表。
利用Worksheets集合对象的Add方法在当前工作簿中增加工作表,语法为:Worksheets.Add(Before, After, Count, Type)
例如,下列代码以本月度为名在当前工作表之前增加一个工作表:
(2)实例2:删除指定工作表。
使用语句“Worksheets(name).Delete”删除指定的工作表。
可以利用完全相似的语句激活、复制、选中特定工作表。
例如,下列语句可以同时选中两个工作表:
Worksheets(Array(Worksheets(1).Name, Worksheets(3).Name)).Select
又例如,下列语句可将Sheet1复制到当前工作表之前,并将复制生成的工作表名为Sheet1(2):
Worksheets("Sheet1").Copy Before := Activesheet
(3)实例3:判断工作表是否存在。
下拉函数,截获系统错误,可判断指定工作表是否存在。
4.Range对象
可以说,Range对象是VBA处理Excel应用时最常用的对象。Range对象即单元格集合,既可以是一行、一列、一个或者多个单元格,也可以是多个工作表上的一组单元格。
Range一般用单元格地址字符串指示区域,例如Range("A1")、Range("A1:B6")、Range("A1:A12", "F1:F12", "K1:K12")或者Range("aRange, bRange")(其中的“aRange”和“bRange”为单元格区域名称)。也可以直接用“数字:数字”或“字母:字母”字符串指示整行或整列区域。例如,Range("1:3")表示1至3行,Range("A:C")表示A至C列。
(1)Range对象的属性与说明见表24-8:
表24-8 Excel中Range对象的属性与说明
Cells的地址为相对于区域左上角起始位置的二维行、列值,即Cells(Row, Column)中的行、列值为相对位置。因此,Cells前面的限定表达式非常重要。例如:
● 语句“Worksheets("aNewsheet").Range("A1:F100").Cells(2, 1).value”返回aNewsheet工作表A2单元格的值。
● 语句“Worksheets("aNewsheet").Range("B1:F100").Cells(2, 1).value”返回aNewsheet工作表B2单元格的值。
● Cells可以用于指示Range范围。例如,下列语句将B2:D6单元格字体设为斜体:
Item(RowIndex, ColumnIndex)的使用与Cells基本相同。如果要使用联合区域,请参见API的说明。为了更加简洁,在区域引用时Item关键字可以省去,例如:
由此可以实现对区域的遍历。
Offset的偏移量同样为行、列值,即Offset (RowOffset, ColumnOffset),正值为向下(向右)偏移,负值为向上(向左)偏移。因此,下列代码激活特定单元格:
“EntireRow”和“EntireColumn”是简洁的指示整行、整列的属性。例如,代码“Range("B3:D6").EntireColumn.Select”为选中B至D列。
(2)Range常用的方法有:
Activate方法:在激活的工作表内激活区域。
AddComment方法:添加批注。
Autofit方法:更改Range对象的列宽或行高以达到最佳匹配,Range对象必须是行或行区域,或者列或列区域。
Clear方法:清除Range对象中的内容。
ClearComment方法:清除Range中所有单元格的批注。
ClearContents方法:清除Range中所有单元格中的公式。
ClearFormats方法:清除Range中所有单元格中的格式。
Copy方法:将单元格区域复制到指定区域或者剪贴板中。
Cut方法:将单元格区域剪切到指定区域或者剪贴板中。
Delete方法:删除Range对象,用参数“xlshiftToLeft”(左移)或“xlshiftUp”(上移)决定如何调整区域。
Find方法:在区域中查找特定信息。
Insert方法:在工作表或宏表中插入一个单元格或区域。
Merge方法:创建合并单元格。
Select方法:选中区域对象。
UnMerge方法:将合并区域分解为独立的单元格。
此外,我们在这里列举两种在现实中常见的实例:
(1)实例1:插入一整行(列)。
Insert方法缺省插入一个单元格,插入一整行可以使用下列任一语句,插入列的操作类似:
(2)实例2:给单元格区域赋值。
下列语句都是给活动工作表的A1:B10区域的20个单元格赋值为3:
Range("A1:B10").value=3
Range("A1", "B10").value=3
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。