微信公眾號:excelperfect
通常情況下,正如上篇文章結尾所講的,通過引用指定工作表后,我們無須激活該工作表即可對該工作表單元格進行操作。然而,在某些情形下,可能還是需要激活或者選擇某工作表,例如,在進行一些復制后粘貼操作時。
下面,我們就來講解Worksheet對象的Activate方法及相關的Select方法。
Activate方法和Select方法都可以激活工作表,使其成為當前工作表。在VBA幫助文檔中,Activate方法屬於Worksheet對象,而Select方法屬於Worksheets集合對象和Sheets集合對象。
下面的代碼:
Worksheets("Sheet2").Activate
使工作表Sheet2成為活動工作表,等價於在工作表界面中單擊了Sheet2工作表標簽。

然而,在錄制宏時,Excel會使用Sheets集合的Select方法。例如,在打開新工作簿時,Excel一般默認Sheet1工作表為當前工作表,此時,打開宏錄制器,選取Sheet2工作表,錄制的代碼如下:
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets("Sheet2").Select
End Sub
下面的語句:
Sheets.Select
選擇工作表中所有的工作表,如下圖所示:

在工作簿中,工作表Sheet1為當前工作表,按住Ctrl鍵,選取工作表Sheet2,這樣同時選取工作表Sheet1和Sheet2,如下圖所示:

錄制上述操作的代碼如下:
Sub Macro2()
'
' Macro2 Macro
'
'
Sheets(Array("Sheet1","Sheet2")).Select
Sheets("Sheet1").Activate
End Sub
說明:
-
Excel將同時選中的工作表編成工作組,並以剛開始的活動工作表為組中的活動工作表。
-
Array函數創建一個數組。
Select方法有一個可選的參數Replace,當指定該參數值為True時,使用指定的工作表代替當前的工作表成為活動工作表。
例如,當前工作表為Sheet2,運行下面的語句:
Sheets("Sheet3").SelectTrue
工作表Sheet3將成為活動工作表,如下圖所示:

當然,上面的語句不帶參數也會使Sheet3成為活動工作表。
當指定該參數值為False時,將擴展選定的工作表包含指定的工作表。
例如,當前工作表為Sheet2,運行下面的語句:
Sheets("Sheet3").SelectFalse
將擴展選定的工作表為Sheet2和Sheet3,如下圖所示:

Activate方法與Select方法的區別
-
在激活或者選取隱藏的工作表時,要使用Activate方法。如果使用Select方法,則會報錯。
-
正如在上文中所看到的,Select方法一次可以選取一個或者多個工作表,但Activate方法一次只能激活一個工作表。
