Blu*_*rry 8 excel vba excel-vba
我需要声明一个相对于活动单元格的范围对象.问题是,每次宏运行时,我想要选择的行数和列数都不同.
例如,我有两个变量:numRows和numCols.
我想在左上角选择一个具有ActiveCell的范围,手中有一行ActiveCell.Row + NumRows和右下角的ActiveCell.Column + NumCols列(然后我打算将这些数据复制到一个数组中)加速我的宏).
有关如何做到这一点的任何建议?
小智 14
Range类上有一个.Offset属性,可以让您完成所需的操作
ActiveCell.Offset(numRows, numCols)
跟进评论:
Dim newRange as Range
Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))
Run Code Online (Sandbox Code Playgroud)
你可以通过验证 MsgBox newRange.Address
像这样:
Dim rng as Range
Set rng = ActiveCell.Resize(numRows, numCols)
Run Code Online (Sandbox Code Playgroud)
然后将该范围的内容读取到数组:
Dim arr As Variant
arr = rng.Value
'arr is now a two-dimensional array of size (numRows, numCols)
Run Code Online (Sandbox Code Playgroud)
或者,选择范围(我不认为这是你真正想要的,但你在问题中要求这个).
rng.Select
Run Code Online (Sandbox Code Playgroud)