《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过渡教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名




【分享成果,随喜正能量】人生,一站有一站的风景,一岁有一岁的味道,你的年龄应该成为你生命的勋章而不是你伤感的理由。生活嘛,慢慢来,你又不差!。

第十六讲 如何引用工作表(引用工作表的方式)

大家好今天继续讲解VBA代码解决方案,今天讲解的是16讲内容:如何对工作表进行引用。VBA中,不同的工作表之间转换或者对不同工作表中的单元格区域进行操作时,需要指定引用的工作表,通常有下面几种方法:

1 使用工作表的名称引用工作表

工作表名称是指显示在工作表标签中的文本,工作表名称可以使用WorkSheets集合和Sheets集合两种引用方式,如下面的代码所示。


Sub mynz_16() '第16讲 如何引用工作表

Worksheets("16").Activate

Sheets("16").Activate

'Worksheets(20).Select

'MsgBox "当前活动工作表的Index序号为:" & Worksheets("16").Index

'MsgBox "当前活动工作表的CodeName为:" & Sheets(20).CodeName

'MsgBox "当前活动工作表的名称为:" & ActiveSheet.Name

End Sub


代码截图:

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名_02


备注:

a) 第2、3行代码都激活工作簿中名称为"16"的工作表,激活后“16”工作表将成为活动工作表。

b) WorkSheets集合包含所有的工作表,而Sheets集合不仅包含工作表集合WorkSheets,还包含图表集合、宏表集合与对话框集合等。任何时刻工作簿中只有一个工作表是活动工作表。

2 使用工作表的索引号引用工作表

工作表索引号是指工作表在工作簿中的位置,Excel根据工作表在工作表标签中的位置以1开始从左向右进行编号。下面的代码选中并激活当前工作簿中第20个工作表:


Sub mynz_16() '第16讲 如何引用工作表

'Worksheets("16").Activate

'Sheets("16").Activate

Worksheets(20).Select

'MsgBox "当前活动工作表的Index序号为:" & Worksheets("16").Index

'MsgBox "当前活动工作表的CodeName为:" & Sheets(20).CodeName

'MsgBox "当前活动工作表的名称为:" & ActiveSheet.Name

End Sub

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名_03



注意:

  • 单个WorkSheet对象的Select方法与Activate方法的主要区别在于Select方法要求工作表可视
  • 当工作簿包括工作表、宏表、图表等时,使用索引号引用工作表如Sheets(1)与WorkSheets(1)引用的可能不是同一个表。
  • 使用Worksheet对象的Index属性可以返回工作表的索引号,如下面的代码所示。

Sub mynz_16() '第16讲 如何引用工作表

Worksheets("16").Activate

'Sheets("16").Activate

'Worksheets(20).Select

MsgBox "当前活动工作表的Index序号为:" & Worksheets("16").Index

'MsgBox "当前活动工作表的CodeName为:" & Sheets(20).CodeName

'MsgBox "当前活动工作表的名称为:" & ActiveSheet.Name

End Sub


代码截图:

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名_04


3 使用工作表的CodeName引用工作表

使用Worksheet对象的CodeName属性可以返回工作表的代码名称,如下面的代码所示。


Sub mynz_16() '第16讲 如何引用工作表

'Worksheets("16").Activate

'Sheets("16").Activate

Worksheets(20).Select

'MsgBox "当前活动工作表的Index序号为:" & Worksheets("16").Index

MsgBox "当前活动工作表的CodeName为:" & Sheets(20).CodeName

'MsgBox "当前活动工作表的名称为:" & ActiveSheet.Name

End Sub


代码截图:

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_VBA_05


备注:

1) 工作表的代码名称显示在VBE工程资源管理器窗口中,在属性窗口中能够修改工作表代码名称。

2) 在VBA中能够直接使用工作表的代码名称引用工作表,即使工作表的名称被修改,代码仍然能够正常运行。

4 使用ActiveSheet属性返回活动工作表

使用ActiveSheet属性可以返回活动工作表,如下面的代码所示。

Sub mynz_16() '第16讲 如何引用工作表

'Worksheets("16").Activate

'Sheets("16").Activate

Worksheets(20).Select

'MsgBox "当前活动工作表的Index序号为:" & Worksheets("16").Index

'MsgBox "当前活动工作表的CodeName为:" & Sheets(20).CodeName

MsgBox "当前活动工作表的名称为:" & ActiveSheet.Name

End Sub


代码截图:

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_VBA_06



备注:

1) ActiveSheet属性应用于AppActivate对象、Window对象和Workbook对象时,如果未给出对象识别符,返回活动工作簿中的活动工作表。


EXCEL窗口:

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名_07


运行MyShActive

VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_表名_08


VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_VBA_09


今日内容回向:

1 使用工作表的名称、工作表的索引号、工作表的代码名称有什么不同?

2 如何得到活动单元工作表的名称?

3 Select方法与Activate方法 有什么不同?



本讲内容参考程序文件:VBA代码解决方案(1-19).xlsm









VBA代码解决方案第十六讲:如何引用工作表(引用工作表的方式)_VBA_10



我20多年的VBA实践经验,全部浓缩在下面的各个教程中: