Excel VBA Макросы: Как вставить массив на лист?

Автор Василий, 03 августа 2015, 19:01

Василий

Подскажите, что неверно в следующей записи (горизонталь выводит корректно, а вертикаль нет):
Sub TABL()
    Cells(1, 1).Resize(1, 7) = Array("ФИО", "КД", "ТИП", "ПОД", "ОСЗ", "%%", "ПЕНИ")
    Cells(2, 1).Resize(5, 1) = Array("Иванов", "Петров", "Сидоров", "Козлов", "Конев")
End Sub

Администратор

Василий, в VBA используются в основном два вида массивов (есть ещё трёхмерный и т.д.):

  • одномерный;
  • двумерный.
Одномерный массив можно мысленно представить как обычную таблицу, состоящую из одной строки.
Двумерный массив можно представить как обычную таблицу, состоящую из строк и столбцов.

Vba-функция "Array" создаёт одномерный массив. Когда вы его помещаете в Excel, то он и занимает соответствующие ячейки.

Чтобы вставить массив в несколько строк, нужно создать двумерный массив. Для этого можно использовать разные способы. Ниже используется эксель-функция "Transpose". В результате её использования будет создан двумерный массив, представляющий собой таблицу, состоящую из одного столбца и несколько строк. Функция "Transpose" меняет местами строки и столбцы.

Sub TABL()
    Cells(1, 1).Resize(1, 7) = Array("ФИО", "КД", "ТИП", "ПОД", "ОСЗ", "%%", "ПЕНИ")
    Cells(2, 1).Resize(5, 1) = WorksheetFunction.Transpose(Array("Иванов", "Петров", "Сидоров", "Козлов", "Конев"))
End Sub

Василий