Объявить диапазон относительно активной ячейки с помощью VBA
мне нужно объявить объект диапазона относительно активной ячейки. Проблема в том, что количество строк и столбцов, которые я хочу выбрать, отличается при каждом запуске макроса.
например, у меня есть две переменные: numRows
и numCols
.
Я хочу выбрать диапазон, который имеет ActiveCell в левом верхнем углу, имеет ячейку с ActiveCell строки.Ряд + NumRows и и activecell колонки.Столбец + NumCols в правом нижнем углу (а затем я намерен скопировать эти данные в массив для ускорения моего макроса).
какие-либо предложения о том, как это сделать?
2 ответов
есть .Смещение свойства на классе диапазона, который позволяет вам делать только то, что вам нужно
ActiveCell.Offset(numRows, numCols)
выполнить комментария:
Dim newRange as Range
Set newRange = Range(ActiveCell, ActiveCell.Offset(numRows, numCols))
и вы можете проверить с помощью MsgBox newRange.Address
такой:
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