Страницы: 1
RSS
Копия массива, VBA
 
Добрый день,

не могу разобраться никак.
хочу скопировать массив с использованием ReDim, Resize.
макрос написал, можете поправить его.
 
???
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
1. цикл не правильный.
redim резервирует массив (1 to 3, 1 to 2) после чего вы идете циклом с 7 по 9
строка
Код
arr1(i, j) = arr(i, j) 
получается
arr1(1, 7) = arr(1, 7)
такого резерва нет в массиве - ошибка.
да и вообще первая строка формирует массив - redim и дальнейший цикл в данном примере лишнее.
Изменено: V - 24.10.2014 16:43:25
 
Чуть поменял код, ячейки оставил Ваши
Код
Sub mas()
Dim arr(), arr1()
    arr() = Range("A7:B9").Value
    ReDim arr1(1 To UBound(arr), 1 To 2)
    For i = 1 To UBound(arr)
        For j = 1 To 2
            arr1(i, j) = arr(i, j)
        Next
    Next
    ActiveSheet.Range("A15").Resize(UBound(arr1), 2) = arr1
End Sub
 
 
Спасибо ASKer_mk
 
:)
Код
Sub mas()
arr = Range(Cells(7, 1), Cells(9, 2))
Cells(15, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End Sub 
 
если развить тему и продолжить так: скопировать только столбцы с числами из массива, у мемя получается их копировать, но разрвыв (шаг) между ними сохраняется, как их скопировать рядом друг с другом (в столбец В и С)?
 
так?

Код
Sub mas()
Dim arr(), arr1(), M&
arr() = Range("B2:F4").Value
For j = 1 To UBound(arr1, 2) Step 3
M = M + 1
ReDim Preserve arr1(1 To UBound(arr), 1 To M)
  For i = 1 To UBound(arr)
   arr1(i, M) = arr(i, j)
  Next i
Next j
ActiveSheet.Range("B7").Resize(UBound(arr1), UBound(arr1, 2)) = arr1
End Sub
 
Изменено: V - 24.10.2014 17:15:16
 
не получается, пишет Subscript out of range
 
опечатка :) в 4 строке arr1 замените на arr.
 
))) тепрь type mismatch
 
V, объясните, пожалуйста смысл этой строки, а то не до конца понятен принцип действия
Код
 ActiveSheet.Range("B7").Resize(Ubound(arr1),Ubound(arr1,2))=arr1
Смысл до Ubound(arr1,2) понятен резервируется поле на листе, начиная с ячейки В7, высотой в "длинну" массива, а дальше что имеется в виду.
Спасибо.
 
шириной в ширину массива.
 
:)
Изменено: V - 24.10.2014 20:57:50
 
V,  а вас работает макрос? у меня ошибку пишет((((
 
У меня без ошибки.
 
Цитата
dima-dima пишет: а вас работает макрос?
если бы не работал то я бы файл не выкладывал.
Страницы: 1
Наверх