平時生活中,有很多細節(jié)在我們看來似乎是習(xí)以為常的。例如,在教孩子剪紙時,我們會選取一張合適大小的紙,然后對其進行裁剪成想要的模樣;在維修機器時,我們會先選取合適的扳手,利用它來擰螺絲。像選擇紙張并在紙張上進行操作、選取扳手并利用它來做別的事情等等這些操作,是再自然不過的事情了。
然而,當(dāng)我們使用Excel VBA來操控單元格時,是否要先選取相應(yīng)的單元格呢?如果熟悉了VBA,我們立馬就可以回答:未必。可以說,在Excel VBA的大多數(shù)操作中,選取單元格的動作是多余的,甚至?xí)下a的速度。但是,選取單元格是最基本的操作,是我們無意中就完成的操作,譬如在Excel工作表界面,我們將鼠標(biāo)一點,那個周邊帶框的單元格就是我們選取的單元格,此時,我們應(yīng)用的格式、輸入的數(shù)據(jù)都在那個單元格中。
這里,我們還是從這個最基本的操作介紹起,逐步擴展到Range對象的諸多有用的屬性和方法。
Select方法
Range對象的Select方法表示選擇某個單元格或某單元格區(qū)域。例如,下面的代碼:
Range(“A2”).Select
使單元格A2為當(dāng)前單元格。
下面的代碼:
Range(“C2:C5”).Select
選取單元格區(qū)域C2:C5。
下圖顯示了上述代碼運行后的結(jié)果:
同樣地,下面的代碼:
Range(“C5″).Select
Cells(5,3).Select
[C5].Select
Cells(65539).Select
Cells(5,”C”).Select
均選取單元格C5為當(dāng)前單元格。
下面的代碼:
Range(“C2:C5”).Select
Range(“C2″,”C5”).Select
[C2:C5].Select
Range(Range(“C2”), Range(“C5”)).Select
Range(Cells(2, 2), Cells(5, 2)).Select
均選取單元格區(qū)域C2:C5。
下面的代碼:
Columns(2).Select
Columns(“B”).Select
均選取B列。
下面的代碼:
Columns(“B:C”).Select
選取B列和C列。
下面的代碼:
Rows(2).Select
Rows(“2:2”).Select
均選取第2行。
下面的代碼:
Rows(“2:3”).Select
選取第2行和第3行。
可以看出,在VBA中,您可以采用多種方法來選取要操作的單元格或單元格區(qū)域。
您可以在VBE中逐一輸入上述代碼并運行后對照Excel界面觀察運行后的結(jié)果,以加深您對單元格對象的理解。
Activate方法
Range對象的Activate方法用于使所選單元格區(qū)域中的某單元格為活動單元格。如果沒有事先明確地選擇某區(qū)域,則認(rèn)為是在當(dāng)前工作表中的所有單元格中選取某單元格。
例如,下面的代碼:
Range(“B2”).Activate
使當(dāng)前工作表中的單元格B2為活動單元格。
下面的代碼:
Range(“B2:C5”).Select
Range(“B5”).Activate
使所選擇的單元格區(qū)域B2:C5中的單元格B5為當(dāng)前活動單元格。如下圖所示:
下面是一些“奇怪的”現(xiàn)象,如下面的代碼:
Range(“B2:D3”).Activate
將選取單元格區(qū)域B2:D3,并使該區(qū)域的左上角單元格B2為當(dāng)前活動單元格。如下圖所示:
您可以使用不同的單元格區(qū)域表示方式,來試驗Activate方法。運行代碼時結(jié)合Excel界面觀察其行為,體驗Activate方法的實際運行效果。
有興趣的話,您對ActiveCell屬性和Cells屬性分別試一試Select方法和Activate方法,看看結(jié)果如何?在學(xué)習(xí)VBA時,多些想法,多些思考,多些嘗試,就會對Excel對象理解得更加深入透徹,也會取得更快速的進步。
最后要說明一點的是,本節(jié)的內(nèi)容對熟悉VBA的人來說,可能覺得太啰嗦了,因為熟悉VBA后這兩個方法幾乎不會用到。但對于初學(xué)者來說,在操作一個對象之前先選擇它是很自然的一種想法,仔細體驗Select方法和Activate方法,有助于打開理解Range對象之門。畢竟,很多初學(xué)者的代碼或宏錄制器的代碼中都有大量的Select和Activate存在,并且在我們后續(xù)的介紹中也會時不時地出現(xiàn)這兩個方法。
此外,對于熟悉的人來說,考慮這兩個方法的一些細微之處,也是很有意思的事情。