Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Василий от 03 августа 2015, 19:01

Название: Excel VBA Макросы: Как вставить массив на лист?
Отправлено: Василий от 03 августа 2015, 19:01
Подскажите, что неверно в следующей записи (горизонталь выводит корректно, а вертикаль нет):
Sub TABL()
    Cells(1, 1).Resize(1, 7) = Array("ФИО", "КД", "ТИП", "ПОД", "ОСЗ", "%%", "ПЕНИ")
    Cells(2, 1).Resize(5, 1) = Array("Иванов", "Петров", "Сидоров", "Козлов", "Конев")
End Sub
Название: Re: Excel VBA Макросы: Как вставить массив на лист?
Отправлено: Администратор от 03 августа 2015, 19:15
Василий, в 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
Название: Re: Excel VBA Макросы: Как вставить массив на лист?
Отправлено: Василий от 04 августа 2015, 10:34
Спасибо, все очень доходчиво.