Как все (по крайней мере, Тим и Шахкалпеш) указали, нам нужно понять, что такое revCall
или, более конкретно, нам нужно понять, как вы хотите дать им ALL ROWS
в качестве аргумента.
Поиск последней строки (или столбца или ячейки)
Распространенной проблемой Excel является поиск последней использованной строки / столбца / ячейки.
Это даст вам конец вашего вектора.
Excel дает вам несколько способов справиться с этим:
xlTypeLastCell
Последняя ячейка, использованная во всем листе (независимо от того, используется она в столбце А или нет)
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
End (xlUp)
Последняя использованная ячейка (включая пробелы между ними) в столбце A проста:
lastRow = Range("A" & Rows.Count).End(xlUp).Row
End (xlToLeft)
Последняя использованная ячейка (включая пробелы между ними) в строке 1 очень проста:
lastRow = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Row
UsedRange
Последняя ячейка, использованная в рабочем листе (согласно интерпретации Excel):
Set rangeLastCell = ActiveSheet.UsedRange
Использование массива в качестве аргумента
Приведенные выше методы объяснили вам, как найти последний ряд (если это то, что вам нужно). Затем вы можете легко создать свой вектор и использовать его в своей процедуре revCA11
.
Вы можете либо указать массив в качестве аргумента , как Тим указал в своем ответе с помощью такого утверждения:
myArray = ActiveSheet.Range("A1", Cells(lastRow, lastColumn).Value
Или вы можете использовать целое число (или длинное), чтобы построить свой вектор внутри вашей процедуры так же просто, как объявить диапазон:
Range("A1:A" & lastRow)