通常情况下,正如上篇文章结尾所讲的,通过引用指定工作表后,我们无须激活该工作表即可对该工作表单元格进行操作。然而,在某些情形下,可能还是需要激活或者选择某工作表,例如,在进行一些复制后粘贴操作时。

 

下面,我们就来讲解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方法一次只能激活一个工作表。