今天我們聊聊如何在VBA代碼里引用對(duì)象。 引用對(duì)象是非常重要的,因?yàn)樵诖a里訪問(wèn)對(duì)象時(shí)必須指明需要操作的對(duì)象。 上節(jié)有講到集合,通過(guò)情況下,我們都是引用集合中某個(gè)特定的成員對(duì)象。 示例: Worksheets ('sheet1') 當(dāng)我們輸入的索引號(hào)或名稱(chēng)無(wú)效時(shí)會(huì)有一個(gè)“下標(biāo)越界”的錯(cuò)誤提示。 注意:這里有個(gè)問(wèn)題,比如當(dāng)前工作簿中有一個(gè)工作表的名稱(chēng)為1,在沒(méi)有隱藏工作表的情況下,該工作表排在第2位。 當(dāng)然,你也可以用變量來(lái)代替1或”1”。 Dim i As Integer, s As String
其他所有的對(duì)象都在Application之下,當(dāng)我們需要訪問(wèn)某個(gè)對(duì)象時(shí),就需要一級(jí)一級(jí)訪問(wèn)。 我們把這個(gè)過(guò)程用個(gè)列表簡(jiǎn)化下 大樓(Excel)--10樓(工作?。?/span>--1003住戶(工作表)--客廳(Value屬性) 我們?cè)L問(wèn)1003的客廳,就經(jīng)過(guò)了這么幾個(gè)環(huán)節(jié)。 咱回到Excel中來(lái)繼續(xù),在VBA代碼中,這些層層的對(duì)象之間(上下級(jí))咱們用圓點(diǎn)號(hào)相連(英文的.)。 通常在對(duì)象的名稱(chēng)后輸入.后會(huì)有一個(gè)自動(dòng)成員列表(只有極少數(shù)對(duì)象例外)。
Applcation.workbooks('工作簿1.xlsm') 再接上面,如果我要訪問(wèn)工作簿1.xlsm 中的工作表 sheet1時(shí),就在上面的引用后面再加上工作表的引用 Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1') 再繼續(xù)扒(感覺(jué)象是娛記暴料)單元格A3,那就再加個(gè)range對(duì)象 Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3') 再繼續(xù)挖,要獲取A3單元格的值時(shí) Applcation.workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3').value 扒了這么多,不知大家繞暈了沒(méi)。天啦,Excel對(duì)象何其多,才訪問(wèn)4級(jí)就這么長(zhǎng)了,要是有十幾層咱辦?
首先由于代碼是在Excel中運(yùn)行,引用的也是Excel自身對(duì)象的話,再加上Application是對(duì)象層次中的頂級(jí),一般情況下這個(gè)是可以省略的(還是有不能省略的,據(jù)觀察,如果applcation下面的屬性返回的是對(duì)象時(shí),是可以省略application的) 有了第一條,上面的可以省一截了: workbooks('工作簿1.xlsm').worksheets('sheet1').range('a3').value 其次,如果工作簿1.xlsm是當(dāng)前活動(dòng)工作簿時(shí),工作簿的引用可以再省略: worksheets('sheet1').range('a3').value 再來(lái),如果工作表 sheet1 是當(dāng)前活動(dòng)工作表時(shí),工作表集合的引用也可以省略: range('a3').value 當(dāng)然省了這么多,如果還要減字符的話,其實(shí)value也可以省略(某些場(chǎng)合不能省)。 range(“a3”).value,省到這個(gè)情況下,前面咱不是有講到當(dāng)在對(duì)象后面輸入.后會(huì)有自動(dòng)成員列表嘛,所以value這個(gè)屬性也沒(méi)有再省略的必要了。 |
|
來(lái)自: fzchenwl > 《excel精英培訓(xùn)》