Объявить диапазон относительно активной ячейки с помощью 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