【转载】EXCEL VBA 中的Range.offset和Range.resize

在Excel VBA中range.offset和range.resize均可以重新选择区域,但range.offset表示偏移且偏移后尺寸不改变,range.resize则会根据输入的行数和列数重新定义区域。
 
一、range.offset(偏移行,偏移列)
  偏移行和列若为正则向下和向右偏移,若为负数则表示向上和向左偏移,若为零则表示不偏移。
 
示例如下:range.offset(1,1)表示向下和向右移动一个单元格。
 
二、range.resize(行数,列数),返回调整后的区域大小
  不同于range.offset中的偏移行和便宜列可为正或负或0,resize中的行数和列数只能为正数,否则会出错
  range.resize(2,3)表示向下两行,向右三行。
 
请看以下例子:
 
Sub a()
    [A1].Resize(2, 1).Select
End Sub
该代码表示选择A1:A2,包含两行一列2个单元格,表示以A1为基准,重置两行一列,即选择A1:A2区域。
 
Sub Y()
  Range("B1:C2").Resize(3, 4).Select
End Sub
这个例子代码是表示选择B1:E3,包含三行四列共12个单元格。该区域是以B1为基准,重置三行四列的区域。
 
Sub R2()
  [B1:C2].Resize(1).Select
End Sub
代码代表是选择B1:C1区域,将原区域两行重置为一行,而列数保持不变。而对于有小数的行列,会进行四舍五入。
 
Sub ae()
  [B1:C2].Resize(2.5, 2.4).Select
End Sub
该代码是选择B1:C2区域,是以B1为基准,重置2行2列。
posted @ 2021-11-13 16:44  深海澜鲸  阅读(1866)  评论(0编辑  收藏  举报