Страницы: 1
RSS
Присвоение массиву значение ячейки другого листа
 
Здравствуйте. Вчера впервые сел за макросы, еще многого не знаю или не понимаю.
Суть задачи:
макрос запускается на "листе1". Надо присвоить массиву значения определенных ячеек с листа2 и вывести это все дело на листе 1.
Текст программы:
Код
Sub Test2()
   Dim plank(1 To 30) As Integer
   k = 1
   Sheets("Лист2"Select
   Range("I7".Select

   Do Until IsEmpty(ActiveCell)
      plank(k) = ActiveCell.Formula
         k = k + 1
      ActiveCell.Offset(1, 0).Select
    Loop


   Sheets("Лист1".Select
   Range("m9".Select
   For i = 1 To k - 1
       ActiveCell.Formula = plank(i)
       ActiveCell.Offset(1, 0).Select
   Next i

End Sub
Не забывайте оформлять код [МОДЕРАТОР]

Эксель выдает ошибку "400". Ясно, что это связано с выбором другого листа. Но в чем конкретно дело - понять не могу.
Так я тоже пробовал. Worksheets("Лист2" ;) .Range("I7" ;) .Select. Тоже выдается ошибка.

Много гуглил. По идее проблем быть не должно (
Помогите пожалуйста :-)
 
как-то так будет правильно:

Код
Sub Test2()
    Dim ra As Range, arr

    With Worksheets("Лист2")
        ' определяем границы диапазона ячеек - с ячейки i7 до последней заполненной в столбце i
        Set ra = .Range(.Range("i7"), .Range("i" & .Rows.Count).End(xlUp))
    End With
    arr = ra.Value        ' считываем диапазон в массив

    ' выводим массив на Лист1, начиная с ячейки m9
    Sheets("Лист1").Range("m9").Resize(UBound(arr), 1).Value = arr
End Sub 

в вашем коде много ошибок было - проще было написать макрос «с нуля»
Изменено: Игорь - 24.05.2014 09:46:01
 
Спасибо, конечно, все работает, но это за гранью моих небольших знаний :-) Буду разбираться. Но теперь не пойму как можно получить доступ к отдельным элементам массива arr.
Запись вида msgbox(arr(1)) не работает. Чувствую, это не простой массив.
Изменено: stud25 - 24.05.2014 10:17:56
 
Массив arr - двумерный
размер по вертикали зависит от количества строк, по горизонтали - один столбец

вывод первого значения
Код
msgbox arr(1,1) 
вывод третьего значения
Код
msgbox arr(3,1)  
 
Двумерный? Тогда все ясно, спасиб)
 
Какой это массив и что в нём где - смотрите в окне Locals при отладке кода. И тогда таких вопросов не будет :)
Страницы: 1
Читают тему
Наверх