我需要声明一个相对于Active Cell的范围对象。问题是,每次宏运行时,我想要选择的行数和列数都不同。
例如,我有两个变量:numRows
和numCols
。
我想在左上角选择一个具有ActiveCell的范围,手中有一行ActiveCell.Row + NumRows和右下角的ActiveCell.Column + NumCols列(然后我打算复制这些数据)到一个数组来加速我的宏。)
有关如何执行此操作的任何建议吗?
答案 0 :(得分:13)
Range类上有一个.Offset property,可以让你完成你需要的任务
ActiveCell.Offset(numRows, numCols)
跟进评论:
Dim newRange as Range
Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))
您可以按MsgBox newRange.Address
答案 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