分享

【20180828】- Excel VBA工作表引用方式,傻傻也分得清

 鹰击彩霞 2019-11-03

大家好,我是中药党。上期简单罗列了一下自己在写分发合并的时候遇到的好几个含混不清的定义,发现梳理之后我自己也更加清晰地掌握了概念,在看一些网上的VBA代码也不那么是是而非了,其实在Excel VBA的世界中,对于新手来说,这样相似的概念还有很多,今天就想和大家一块分辨一下工作表引用的相关的知识点。

有人会说,工作表引用很简单,使用工作表的名称就可以啊,比如下图中,用WorkSheets(“第三张”).Select或者Sheets(“第三张”).Select就可以选择名称为“第三张”的工作表。

但是,当你看到网上大神写的代码中有Sheet1Sheets(1)Sheets(“1”)的时候,是不是还没分析代码逻辑的时候就已经脑子短路了呢?

下边咱们就分析区别一下工作表引用常用的几种方法:

1.使用工作表名称引用

这是大家最常用的方法,使用格式就是WorkSheets(“[工作表名称]”)或者Sheets(“[工作表名称]”),这里的工作表名称就是上图中的“第三张”,是该工作表name属性的值。这种用工作表名称引用的特点就是在WorkSheets或Sheets集合中必须用双引号引用工作表名称。所以上边Sheet1,Sheets(1)和Sheets(“1”)中,只有Sheets(“1”)使用了双引号,所以它选择的就是一个工作表名称为1的工作表,在不修改工作表名称的情况下Sheets(“1”)是唯一固定的,如下图。

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

工作表索引号是指工作表在工作簿中的位置,Excel根据工作表在工作表标签中的位置以1开始从左向右进行编号。这种用索引号引用的特点就是在WorkSheets或Sheets集合中用自然数数值标注工作表在集合中的位置

所以上边Sheet1,Sheets(1)和Sheets(“1”)中,Sheets(1)就是使用索引号引用的工作表,表示工作表标签中从左向右第1个工作表,如下图。如果调整了工作表的标签位置,通过索引引用的工作表也会发生变化。

但是对使用索引引用工作表,像上图这样单独选择工作表的用法并不常见,因为工作表标签的位置太容易被改变,我个人觉得通过索引引用工作表一是在用For循环遍历工作表集合的时候,如下图:

二是用在浏览工作表上下翻页中,如下图:

3.使用工作表的代码名称引用

使用Worksheet对象的CodeName属性可以直接引用工作表对象。例如下图中“第一张”工作表的CodeName是Sheet1,那么就可以用Sheet1.Select选中“第一张”工作表,CodeName就是VBE工程资源管理器中属性窗口中“名称”的值,如下图:

使用CodeName选择工作表,如下图Sheet1.Select,很多小伙伴会错误理解成选择Name属性为Sheet1的工作表,一定要多加注意哦。

在新建工作表的时候,系统会默认用Sheet1,Sheet2等流水号去自动赋值CodeName和Name属性。如下图,通过WorkSheets.Add方法增加两个工作表,新增第一个工作表的Name为Sheet5,CodeName为Sheet7,新增第二个工作表的Name为Sheet6,CodeName为Sheet8。

在微软的说明文档中CodenName属性运行时不可更改,是一个只读属性。所以可在运行VBA代码前,对已有固定工作表定义有意义的CodeName,方便VBA代码的编写。但是除了程序员,一般用户也不会去修改这个值,因为CodeName就是一个标识唯一的代码名称,不会在工作表界面中显示出来

比如下图,将一个数据源表的CodeName修改为Sht_dataSource,弹框显示该工作表已使用区域的列数。


所以,用CodeName引用的工作表特点也很明显,在VBA中能够直接使用工作表的CodeName引用工作表,优点即使工作表的Name属性和工作表标签所处位置都被修改,代码仍然能够正常运缺点使用不直观,代码运行期间不能修改。

综上所述,三种引用工作表的方法各有特点,在实际应用中不一定局限于哪种引用方法:①引用工作表名称的方法比较直观和常见,适用于VBA代码中没有修改工作表Name属性的情况;②引用工作表索引的方法一般用于For循环遍历工作表;③使用CodeName引用的方法虽然都规避了工作表名称和标签位置变动的问题,但是它的缺点就是不直观,不能在程序运行时更改,适用于在VBA程序运行前,对固定工作表定义CodeName,从而方便在VBA中编写代码。

Excel VBA学习的小伙伴们,是不是看完此文后,对工作表引用的方式和适用环境又更加清楚了呢,我认为有了好的概念基础,才能更好地堆砌代码的大楼,我在写文的时候也有了很多收获和感悟,欢迎大家留言和讨论。

猜您喜欢

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多