学习了VBA的基础语法之后,我们改学习针对Excel的东西了,从单元格的选取开始。
一个单元格的选取
前面我们提到选取单元格大体有两种方式,Range和Cells:
Range(''a1'').Select
Range(''A'' & 1).Select
这个前面用过好多次了,相信大家都很熟悉这种写法了。需要大家注意的是双引号的位置,如果涉及到变量了,要用下面那种方式,变量不能在引号里面,中间用&符号连接。
Cells(1, 1).Select
Cells(1, ''A'').Select
Cells(1).Select
注意,Cells跟我们平时的习惯不一样,括号里的内容是行号、列标,列标可以用字母,也可以换算成数字。第二种写法也是为了有变量的时候用。第三种写法用的有限,它是按照单元格的排序写的,整张表格一行一行的排序,一般我们不会用到。
还有一种简写的方法:
[A1].Select
这种方法用的是中括号,不需要双引号,但是使用也有非常大的局限性,必须是单元格的绝对地址,不能有变量。
连续区域的选取
Range(''a1:c5'').Select
Range(''A1'', ''C5'').Select
Range(''A'' & x '':C'' & y).Select
这是我们最常用的两种表示方式,左上角到右下角的单元格地址表示。注意细节上的区别,用冒号的话需要在一个引号下面,用逗号则需要分别用引号。
Range(Cells(1, 1), Cells(5, 3)).Select
这种方式只不过用Cells替换了上面的单元格表示方式,很容易理解。优点是,可以非常自由的使用变量。
Range(''a1:a10'').Offset(0, 1).Select
前面提到过Offset,指的是偏移量,共有5个参数,常用前2个参数,分别指的是行偏移量和列偏移量。我们这个例子里就是指将A1~A10的区域行偏移0行,列偏移1列,即B1~B10。
Range(''a1'').Resize(5, 3).Select
Resize就是以某一指定单元格为顶点,选择一个矩形区域。
不连续单元格的选取
Range(''a1,c1:f4,a7'').Select
有了前面的基础,理解这点非常容易了,值得注意的是细节,双引号只能用一对,中间不能出现引号,区域中用冒号,区域间用逗号隔开。Range里只能包括最多255个区域。
Union(Range(''a1''), Range(''c1:f4''), Range(''a7'')).Select
Union可以将不同的区块合并到一起。弥补了Range的缺陷。
行的选取
Rows(1).Select
Rows(''3:7'').Select
单行和连续多行的选取方式,很简单。
Range(''1:2,4:5'').Select
Range(''c4:f5'').EntireRow.Select
不连续的必须用Range来实现。后面那种用法是我们写程序时常常用到的,不必想法获取行号或者列号就可以选中整行或整列。
列的选
Columns(1).Select
Columns(''A:B'').Select
Range(''A:B,D:E'').Select
Range(''c4:f5'').EntireColumn.Select
同行的选取,注意行号用的是数字,列号用的是字母。
重置坐标下的单元格表示方法
Range(''b2'').Range(''a1'') = 100
这个不常用,一旦发现两个连续的Range,就要考虑是重置坐标了。表格默认的是以A1为顶点,如果有需要,则自己设置表格的顶点。
正在选取的单元格区域
Selection.Value = 100
今天我们一路看到的是Select,这里冒出来的Selection是它的名词形式,想当然地,指的就是正在被选取的区域。