【转载】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列。