跳到主要内容

在 VBA 中引用工作表的方法

在对工作表中的单元格区域进行操作时,通常需要指定引用的工作表,在 VBA 中引用工作表有以下几种方法:

使用工作表名称

工作表名称是显示在工作表标签中的文本,使用工作表名称引用工作表可以利用 WorkSheets 集合和 Sheets 集合两种引用方式,下面的两句代码都可以激活工作簿中名称为“Sheet1”的工作表,激活后工作表将成为活动工作表。

Worksheets("Sheet1").Activate
Sheets("Sheet1").Activate

WorkSheets 与 Sheets

WorkSheets 集合包含所有的工作表。

Sheets 集合不仅包含工作表集合 WorkSheets,还包含图表集合 Charts,宏表集合 Excel4MacroSheets 与 MS Excel 5.0 对话框集合等。详细区别与使用参见:Sheets 与 Worksheets 在 Excel VBA 中的正确使用

任何时刻工作簿中只有一个工作表是活动工作表。

任何时刻工作簿内至少要有一张可视表。

使用索引号

工作表索引号是工作表在工作簿中的位置,Excel 根据工作表在工作表标签中的位置以 1 开始从左向右进行编号。

例如,下面的两行代码都将激活第一个工作表:

Worksheets(1).Select
Worksheets(1).Activate

单个 WorkSheet 对象的 Select 方法与 Activate 方法的主要区别在于 Select 方法要求工作表可见,如果第一张工作表是隐藏的,使用 Worksheets(1).Select 将出错。

Worksheet 对象的 index 属性返回工作表的索引号,如下面的示例代码显示工作表"Sheet1”的索引号:

MsgBox Worksheets("Sheet1").Index

使用代码名称

工作表代码名称显示在 VBE 【工程资源管理器】窗口中,在【属性】窗口的【名称】项中能够修改工作表代码名称。如下图所示,工作表 Sheet1 的代码名称改为 MySheet1

更改工作表代码名称
更改工作表代码名称

我们能够直接使用工作表代码名称来引用工作表,使用工作表代码名称的好处是:即使工作表名称被用户修改,代码仍然能够正常运行

可以使用 Worksheet 对象的 CodeName 属性返回工作表的代码名称,如下面的代码返回第一张工作表的代码名称:

MsgBox Worksheets(1).CodeName

更多关于如何使用和重命名代码称请参阅:使用 VBA 代码名称详解

使用 ActiveSheet 引用活动工作表

以下示例代码将活动工作表的名称修改为“果果云课堂”,然后使用消息框显示工作表的名称和工作表的代码名称。

Sub UseName()
    With ActiveSheet
        .Name = "果果云课堂"
        MsgBox "名称为:" & .Name & vbCrLf & "代码名称为:" & .CodeName
    End With
End Sub

ActiveSheet 属性应用于 Application 对象 Window 对象和 Workbook 对象,返回代表活动工作簿或者指定的窗口或工作簿中的活动工作表,如果没有活动的工作表,该属性则返回 Nothing。如果省略对象,该属性则返回活动工作簿中的活动工作表。

评论

您的电子邮件地址不会显示出来。*号为必填项。