3.4 集合、对象、属性和方法

3.4.1 对象,就像冰箱里的鸡蛋

img062 什么是对象

对象就是东西,是用代码操作和控制的东西,属于名词。

打开工作簿,工作簿就是对象;复制工作表,工作表就是对象;删除单元格,单元格就是对象……

img062 对象的层次结构

厨房里放着冰箱,冰箱里有碗,碗里装着早餐要吃的鸡蛋。无论是厨房、冰箱、碗还是鸡蛋,都是东西,都是对象,如图3-23所示。

img148

图3-23 厨房的结构图

厨房里除了冰箱,还有消毒柜和电饭锅;冰箱里放着装有鸡蛋的碗,还放着装着水果的盘子和装着牛奶的瓶子,如图3-23所示。

img149

图3-24 厨房里的多个对象

一个Excel工作簿就像一间大厨房,一个工作簿里可以有多张工作表,一张工作表里有多个单元格区域,如图3-25所示。

img150

图3-25 工作簿里的对象

一个对象可以包含其他对象,同时又包含在其他对象里,不同的对象总是这样有层次地排列着。

img062 集合——多个同类型的对象" class="reference-link">img062 集合——多个同类型的对象

集合也是对象,是对多个同种类型的对象的统称。

冰箱里有很多碗,无论装着鸡蛋还是瘦肉,都属于同一类对象,可以统称为“碗”。但是这个集合里并没有装牛奶的瓶子,因为瓶子不是碗,和碗不属于一类。

一个打开的工作簿,里面有多张工作表,无论工作表的名称是什么,表里保存什么数据,它们都属于工作表集合,即:Worksheets。

img062 怎样取到装鸡蛋的碗

要吃鸡蛋,让孩子去取。

“去厨房,把冰箱里装着鸡蛋的碗拿来。”碗存放的地点(厨房的冰箱里)以及碗的特征(装着鸡蛋)都要介绍清楚,这样,孩子才不会弄错。

img062 VBA中怎样取到集合里的一个对象

取到想要取的对象,称为“引用对象”。

很多个工作簿,若干张工作表,数不清的单元格,怎么表示“Book1” 工作簿中“Sheet2”工作表中的“A2”单元格?

就像取冰箱里装鸡蛋的碗一样,在哪间房的冰箱里拿,拿什么碗,都要叙述清楚。

img151

引用对象就像引用硬盘上的文件,要按从大到小的顺序逐层引用。

但并不是每一次引用对象都必须严谨地从第1层开始。

如果Book1工作簿是活动工作簿,前面的代码可以写为:

img152

如果Sheet2工作表是活动工作表,代码甚至还可以简写为:

img153

3.4.2 对象的属性

img062 什么是属性

每个对象都有属性。对象的属性可以理解为该对象包含的内容或具有的特点。

苹果是有颜色的,颜色就是苹果的属性。我的衣服,衣服就是我的属性。

Sheet2工作表的A2单元格,A2单元格是Sheet2工作表的属性;A2单元格的字体,字体是A2单元格的属性;字体的颜色,颜色是字体的属性。

“的”字后面的,总是“的”字前面的对象的属性。

img154

在VBA中,用点(.)代替“的”字:

我的衣服→我.衣服

Sheet2工作表的A2单元格的字体的颜色→Worksheets(“Sheet2”).Range(“A2”).Font.Color

img062 对象的相对性

img155

某些对象的某些属性,返回的是另一个对象,如Sheet1工作表的Range 属性,返回的是e对像(即单元格),但单元格本身也是一种对象。作为一种对象,它也有自己的属性,如字体(Font),而字体也是对象,也有属性,如颜色。

对象和属性是相对的。单元格相对于字体是对象,相对于工作表是属性。

如果想准确地知道Value(或其他)是方法还是属性,可以在【代码窗口】中将光标定位到它的中间,按F1键,查看帮助里的信息,如图3-26所示。

img156

图3-26 查看Value的帮助信息

3.4.3 对象的方法

img062 什么是方法

方法是在对象上执行的某个操作,属于动词。

如剪切单元格,剪切是在单元格上执行的操作,就是Range对象的方法;选中工作表,选中是在工作表上执行的操作,就是Wroksheet对象的方法;保存工作簿,保存就是Workbook对象的方法……

img062 方法和属性的区别

属性返回对象包含的内容或具有的特点,如颜色、大小等。方法是对对象的一种操作,如选中、激活等。

img062 怎样分辨方法和属性

除了通过查看帮助来分辨属性和方法,还可以在【代码窗口】中按<Ctrl+J>组合键,或者在对象的后面写上点,在自动显示的【属性/方法列表】中根据图标的颜色来分辨,带绿色图标的项是方法,其他的都是属性,如图3-27所示。

img157

图3-27 对象的属性/方法列表

如果在对象的后面输入点后没有显示【属性/方法列表】,则先在【选项】对话框的【编辑器】选项卡里勾选【自动列出成员】复选框,如图3-27所示。

img158

图3-28 设置自动列出成员