最近在看历史书,讲到了很多国家兼并扩张的故事,很多地方你争我夺,不亦乐乎。如果说国家的扩张源于君主的野心和利益,那Excel单元格的扩张呢?
我们可以使用Resize属性将单元格或单元格区域扩大,看看下面的例子。 语句: Range('A1').Select 选择单元格A1。这在前面的文章中已介绍过。 下面的语句: Range('A1').Resize(1, 3).Select 选择单元格区域A1:C1。即将单元格从A1扩大到A1:C1区域,向右增加了2个单元格,占据1行3列。 下面的语句: Range('A1').Resize(2, 3).Select 选择单元格区域A1:C2。即将单元格从A1扩大到A1:C2区域,向右且向下共增加了5个单元格,占据2行3列。 上述语句的运行结果如下图所示。 我们可以看出,利用Resize属性对单元格进行扩张时,以原单元格为起始点但包括原单元格本身,Resize属性的第一个参数值代表扩张后的行数,第二个参数值代表扩张后的列数。
实际上,当在与起始单元格相同的行中进行扩张时,可以省略第一个参数,例如上述代码: Range('A1').Resize(1, 3).Select 等价于代码(省略了第一个参数): Range('A1').Resize(, 3).Select 都将选择单元格区域A1:C1。 同理,当在与起始单元格相同的列中进行扩张时,可以省略第二个参数。
下面来看看单元格区域的扩张。 语句: Range('B2:D3').Select 选择单元格区域B2:D3。这在前面的文章中已介绍过。 下面的语句: Range('B2:D3').Resize(3, 5).Select 选择单元格区域B2:F4。即向右从列D扩展到了列F,增加了2列;向下从行3扩展到行4,增加了1行。 我们可以看出,利用Resize属性对单元格区域进行扩张时,与上文中介绍的对单元格进行扩张相同,以原单元格为起始点但包括原单元格本身,Resize属性的第一个参数值代表扩张后区域的行数,第二个参数值代表扩张后区域的列数。
再看看下面的代码: Range('B2:D3').Resize(2,5).Select 选择单元格区域B2:F3,即向右扩张至F列,增加了2列,行数不变。此时,下面的代码将达到相同的效果(如下图所示): Range('B2:D3').Resize(, 5).Select 即省略了第1个参数。因此,如果只沿着列方向(向右)扩张区域,可以省略第1个参数。 同理,如果只沿着行方向(向下)扩张区域,可以省略第2个参数。
接着看下面的代码: Range('B2:E5').Select 选择单元格区域B2:E5。 下面的代码: Range('B2:E5').Resize(3,2).Select 将选择单元格区域B2:C4,如下图所示。 仔细看一下,单元格区域没有扩大,而是缩小了。可以看出,Resize属性并不是以单元格区域整体为起始来扩张的,而是以单元格区域左上角的单元格为起始单元格并包括该单元格,向右扩张第1个参数值指定的列数,向下扩张第2个参数值指定的行数。 因此,代码: Range('B2:E5').Resize(3,2).Select 等价于: Range('B2').Resize(3, 2).Select
对上文所讲述的内容进行小结,可得出下面的结论:
此外,Resize属性的参数不能为负,即不能向上或向左扩展。这与Offset属性不同。
Resize属性的语法为: Range对象.Resize(RowSize,ColumnSize) 扩展特定的单元格,返回一个由参数RowSize和ColumnSize指定行列数的单元格区域。 其中:
在上文中,我们对单元格区域B2:E5使用Resize属性,指定的参数分别为3和2,结果单元格区域缩小了。如果你想要确保单元格区域只会扩大,那么可以使用下面的代码: Sub ResizeRange1() '声明变量,代表行列数 Dim lRowNumber As Long, lColumnNumber AsLong
'获取单元格区域B2:E5的行数和列数 lRowNumber = Range('B2:E5').Rows.Count lColumnNumber =Range('B2:E5').Columns.Count
'将单元格区域B2:E5向右扩展1列,向下扩展1行,得到区域B2:F6 Range('B2:E5').Resize(lRowNumber 1, lColumnNumber 1).Select End Sub 运行代码后,将单元格区域B2:E5扩展为区域B2:F6。
进一步优化代码,使用对象变量来代替单元格区域: Sub ResizeRange2() '声明变量,代表行列数 Dim lRowNumber As Long, lColumnNumber AsLong
'声明变量,代表单元格或单元格区域 Dim rng As Range
'给对象变量赋值 Set rng = Range('B2:E5')
'获取单元格区域的行数和列数 lRowNumber = rng.Rows.Count lColumnNumber = rng.Columns.Count
'将单元格区域向右扩展1列,向下扩展1行 rng.Resize(lRowNumber 1, lColumnNumber 1).Select End Sub 这样,只需改变对象变量rng的赋值,就可以对其所代表的区域进行相应的扩展。
-------------------------------------- 如果您有更好的示例愿意分享,请给我邮件:xhdsxfjy@163.com
通过下列方式可以更快地了解完美Excel更新:
关注《完美Excel》微信公众账号: |
|