使用VBA声明相对于活动单元格的范围

时间:2014-08-20 15:50:51

标签: excel vba excel-vba

我需要声明一个相对于Active Cell的范围对象。问题是,每次宏运行时,我想要选择的行数和列数都不同。

例如,我有两个变量:numRowsnumCols

我想在左上角选择一个具有ActiveCell的范围,手中有一行ActiveCell.Row + NumRows和右下角的ActiveCell.Column + NumCols列(然后我打算复制这些数据)到一个数组来加速我的宏。)

有关如何执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:13)

Range类上有一个.Offset property,可以让你完成你需要的任务

ActiveCell.Offset(numRows, numCols)

跟进评论:

Dim newRange as Range
Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))

您可以按MsgBox newRange.Address

进行验证

here's how to assign this range to an array

答案 1 :(得分:8)

像这样:

Dim rng as Range
Set rng = ActiveCell.Resize(numRows, numCols)

然后将该范围的内容读取到数组:

Dim arr As Variant
arr = rng.Value
'arr is now a two-dimensional array of size (numRows, numCols)

或者,选择范围(我不认为这是你真正想要的,但你在问题中要求这样做。)

rng.Select