用VBA声明一个相对于活动单元的范围

我需要声明一个相对于活动单元格的范围对象。 问题是,每次macros运行时,我想要select的行数和列数都是不同的。

例如,我有两个variables: numRowsnumCols

我想select一个范围,在左上angular的ActiveCell中有ActiveCell.Row + NumRows行和单元格ActiveCell.Column + NumCols在右下angular的单元格(然后我打算复制这个数据到一个数组加快我的macros观)。

任何build议如何做到这一点?

Range类有一个.Offset属性 ,它允许你做你需要的东西

ActiveCell.Offset(numRows, numCols)

跟进评论:

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

你可以通过MsgBox newRange.Address进行validation

这里是如何将这个范围分配给一个数组

喜欢这个:

 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) 

或者,select范围(我不认为这是你真正想要的,但你问这个问题)。

 rng.Select