sheets和worksheets的区别
从定义上来讲,worksheets是工作表的一个集合对象,而sheets不仅包括工作表对象,还包括图表charts,宏工作表macroworksheet等等。在我们学习VBA的初级阶段,只需要学懂worksheets就可以。因此,本文将主要着眼于worksheets对象来讲解。
worksheets和worksheet的区别
讲到这里,大家可能又云里雾里了,不是说好了要讲worksheets么,怎么还出来一个单数形式?
上面我们也说到了,worksheets是一组工作表集合对象,那工作表又是什么呢? worksheet呀!
也就是说,可以这么简单的理解,worksheet是单个的工作表,有一些个性,例如,姓名,编号,等等,而worksheets更多偏向的是worksheets一些共性,例如计数count等。
worksheet作为单个对象,属性和方法都有兼顾。而worksheets作为集合对象,更多的是偏向于方法。
worksheet与activesheet
如果我们把worksheet再进行分类,就可以按照其是否为当前活动工作表来区分。当前活动的工作表也可以称为activesheet。
也就是说,activesheet其实是worksheet的一种特例。
本节,我们就先从单个的worksheet的属性和方法学起,中间也会穿插一些worksheets的内容。
属性
index
用于返回worksheet在worksheets集合中的索引号。号码从1开始,一直到worksheets的个数。
例如,在下图中,如果使用如下代码来获得sheet4的索引号,会返回2,因为他是从左边数第二个。
name
这个就不用问了,看英文就知道是worksheet的名称属性。同样,用上图举例的话,worksheets(1).name 就是”sheet1”。注意这是一个字符串。
usedrange
用来获得worksheet中已经被使用的range,返回的是一个range对象。之所以没有在range里讲这个,是因为usedrange一定要配合worksheet来使用。
activesheet.UsedRange.SelectSelection.Value = 9
使用UsedRange会得到一个矩形range,包括所有已经使用单元格矩形区域,以及之间的空白单元格。
注意,即使单元格没有值,但被颜色填充,也被认为已使用。如下图所示
实例化和引用
引用
谈到worksheet的引用,我们必须把worksheets集合拉进来。事实上,可以这么理解,worksheet的引用就是指定worksheets集合中某个特定值(如名称或者索引)的worksheet.
我们常用的引用方法有两种,名称法和索引法。
直接使用名称
worksheets("sheet1")
使用索引号
worksheets(1)
Set方法
在VBA里,对于对象变量的定义,仍然可以使用dim方法。例如:
dim wksht as worksheet
定义完变量之后,需要对对象变量进行实例化,需要使用set方法
set wksht = worksheets(1)
对于Excel VBA中所有的对象来说,定义完之后如果要引用都可以用set来实例化,实例化过后就可以对其正常使用对象的方法和属性了。
例如,在上述set语句结束后,修改index为1的工作表的名字就可以用:
wksht.name = "new_name"
当然我们还是可以使用
worksheets(1).name = "new_name"
但我们明显可以看出,如果要多次引用这个工作表,使用set方法定义会使代码书写更加简洁,易懂。
总结
sheets,worksheets,worksheet,activesheet 的区别
worksheet的常用属性
worksheet的实例化与引用