在前面的內(nèi)容中,我們看到了通過(guò)在對(duì)象之間加上句點(diǎn)可以逐步得到想要的對(duì)象,以及引用對(duì)象的省略寫(xiě)法。
在獲得對(duì)象之后,我們就要對(duì)這個(gè)對(duì)象進(jìn)行相應(yīng)的操作。例如,給對(duì)象賦值,讓對(duì)象做相應(yīng)的動(dòng)作,這些就要用到對(duì)象的屬性和方法。
如何使用對(duì)象的屬性和方法呢?仍然是用句點(diǎn),例如:
Worksheets.Add
表示添加工作表。
Range(“A1”).Clear
表示完全清除單元格A1中的內(nèi)容和格式。
Range(“A1”).Value
可以獲得或設(shè)置單元格A1中的值。
Range(“A1”).Address
可以獲得或設(shè)置單元格的地址表示。
……
于是,我們可以得到使用對(duì)象的屬性和方法的規(guī)則:
規(guī)則3:對(duì)象.方法或者對(duì)象.屬性
也就是通過(guò)在對(duì)象后加上句點(diǎn)來(lái)使用對(duì)象的屬性和方法,如下所示。
看一看,與對(duì)象的引用相同,都是使用句點(diǎn)。
我們?cè)诰帉?xiě)VBA代碼或查看別人編寫(xiě)的VBA代碼時(shí),會(huì)大量用到或看到這樣的表示方法。實(shí)際上,這是VBA語(yǔ)言中最基礎(chǔ)的結(jié)構(gòu),如下所示。
有些情況下,我們可以省略參數(shù)名,直接使用參數(shù)值,多個(gè)參數(shù)之間使用逗號(hào)(,)分隔。例如:
Range(“A1”).Offset(1, 2)
也表示基于當(dāng)前單元格A1向下偏移1行,向右偏移2列的單元格。
注意,省略參數(shù)名雖然簡(jiǎn)便,但要嚴(yán)格按照參數(shù)的順序來(lái)設(shè)置相應(yīng)的參數(shù)值,即便有些參數(shù)的值無(wú)須設(shè)置,也要按其順序使用逗號(hào)隔開(kāi)。例如,基于當(dāng)前單元格A1向右偏移2列的單元格:
Range(“A1”).Offset(, 2)
Range對(duì)象的Offset屬性有兩個(gè)參數(shù),其順序是:第一個(gè)參數(shù)RowOffset,第二個(gè)參數(shù)ColumnOffset,上面的代碼中,雖然省略了第一個(gè)參數(shù),但仍要使用逗號(hào)分隔。
如果加上參數(shù)名,則無(wú)須使用逗號(hào):
Range(“A1”).Offset(ColumnOffset:=2)
因此,使用參數(shù)名加上:=設(shè)置參數(shù)是一種較好的編寫(xiě)代碼的方法,不僅無(wú)須考慮參數(shù)的順序,根據(jù)參數(shù)名也知道參數(shù)設(shè)置的具體含義。
對(duì)于方法的參數(shù)也是如此,在此不再贅述。
默認(rèn)屬性
對(duì)于對(duì)象的方法或?qū)傩詠?lái)說(shuō),有些屬性是默認(rèn)的,也就是說(shuō),在我們沒(méi)有設(shè)置屬性時(shí),對(duì)象就會(huì)自動(dòng)表現(xiàn)出的行為。
例如,Worksheets對(duì)象的Add方法,如果我們不設(shè)置參數(shù),執(zhí)行下面的語(yǔ)句:
Worksheets.Add
默認(rèn)為在當(dāng)前工作表前添加一個(gè)工作表,新工作表插入到當(dāng)前工作表的前面。
大多數(shù)情況下,我們會(huì)省略掉Range對(duì)象的Value屬性,例如:
Range(“A1”).Value = “ExcelVBA”
與
Range(“A1”) = “ExcelVBA”
相同,將直接在單元格A1中輸入文本“Excel VBA”。