Excel VBA: как загрузить массив с листа

В Excel VBA существуют различные способы загрузки массива с листа. Независимо от того, являетесь ли вы новичком или опытным пользователем VBA, эта статья познакомит вас с различными приемами разговорного языка и предоставит примеры кода, которые помогут вам понять и эффективно их реализовать.

Метод 1: использование цикла
Один из самых простых способов загрузить массив с листа — использовать цикл. Вы можете перебирать ячейки диапазона и присваивать их значения элементам массива. Вот пример:

Dim myArray() As Variant
Dim rng As Range
Dim cell As Range
Dim rowCount As Long, colCount As Long
rowCount = 5 ' Number of rows in the range
colCount = 3 ' Number of columns in the range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1").Resize(rowCount, colCount)
ReDim myArray(1 To rowCount, 1 To colCount)
For Each cell In rng
    myArray(cell.Row, cell.Column) = cell.Value
Next cell

Метод 2: использование функции WorksheetFunction.Transpose
Другой способ загрузить массив с листа — использовать функцию WorksheetFunction.Transpose. Эта функция позволяет транспонировать диапазон ячеек в одномерный массив. Вот пример:

Dim myArray() As Variant
Dim rng As Range

Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:A5") ' Range to be transposed
myArray = WorksheetFunction.Transpose(rng.Value)

Метод 3: использование типа данных Variant
В VBA вы можете использовать тип данных Variantдля загрузки массива непосредственно из диапазона рабочего листа без явного перебора ячеек. Этот метод эффективен и не требует дополнительного кода. Вот пример:

Dim myArray() As Variant
Dim rng As Range

Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5") ' Range to be loaded
myArray = rng.Value

В этой статье мы рассмотрели три различных метода загрузки массива из листа в Excel VBA. Вы можете выбрать метод, который соответствует вашим потребностям и стилю кодирования. Независимо от того, предпочитаете ли вы использовать циклы, встроенные функции или тип данных Variant, эти методы помогут вам эффективно работать с массивами в VBA.