2015-05-06 3 views
1

Я хочу заполнить серию ячеек массивом, но я не могу это сделать.Заполнение строки в разных ячейках

1)

Dim Principal() As String 
Dim txt As String 

For i = LBound(Principal) To UBound(Principal) 
    txt = txt & Principal(i) & vbCrLf 
Next i 
MsgBox txt 

2)

Dim Principal() As String 
Dim txt As String 

For i = LBound(Principal) To UBound(Principal) 
    Worksheets("Sheet1").Cells(i, 3) = Principal(i) 
Next i 

Я вижу выход в первом примере т.е. MsgBox, но я получаю сообщение об ошибке при попытке сохранить, чтобы разные клетки. Заранее спасибо.

+3

Возможно ли, что ваш массив начинается с 0, где ячейки (0,3) не могут быть найдены? – Alex

+2

Используйте базовую станцию ​​1 в своем модуле, чтобы начать создание массивов с индексом 1 – Sorceri

+0

@Alex Спасибо Alex. Это было быстро, и вы правы. i + 1 работает. – Meesha

ответ

3

Alex и Sorceri уже указывали, что по умолчанию массивы начинаются с индекса 0.
Но помимо этого вам не нужно цитировать, чтобы передать массив в диапазон.

' 1D Array 
With Worksheets("Sheet1") 
    .Range("C1:C" & Ubound(Principal) + 1) = Application.Transpose(Principal) 
End With 

Обратите внимание на + 1. Если Option Base = 1, то вам придется удалить его.
Также обратите внимание, что если вы передаете массив 1D в диапазон, вам понадобится Transpose массив.

Смежные вопросы