Чтобы легко загрузить диапазон в массив (без цикла), используйте:
Dim array_unsorted As Variant 'must be variant!
array_unsorted = ThisWorkbook.Worksheets("NameOfSheet").Range("B6:B183").Value '2-dimensional array
, вы можете получить доступ к массиву с помощью
Debug.Print array_unsorted(row, column) 'yes it has only 1 column but it is still there
Debug.Print array_unsorted(1, 1) 'first value
Debug.Print array_unsorted(2, 1) 'second value
или транспонировать его, чтобы сделать его 1-мерный
array_unsorted = WorksheetFunction.Transpose(ThisWorkbook.Worksheets("NameOfSheet").Range("B6:B183").Value) '1-dimensional
и вы можете получить доступ к массиву с помощью
Debug.Print array_unsorted(i) 'this is 1-dimensional
Debug.Print array_unsorted(1) 'first value
Debug.Print array_unsorted(2) 'second value
Обратите внимание, что функция транспонирования имеет ограничение в 65 536 строк.Если вы превысите их, остальное будет обрезано молча.
Я рекомендую избегать ActiveWorksheet
(если вы не пишете надстройку или код не используется для нескольких листов).Используйте ThisWorkbook.Worksheets("NameOfSheet")
, чтобы ссылаться на лист по его имени, что более удобно, и в Excel не будет ошибок.