Вариант массива, не заполняющий ячейки назначения в VBA

#excel #vba

#excel #vba

Вопрос:

Я пытаюсь скопировать диапазон данных с одной вкладки на другую вкладку в Excel, используя самый быстрый способ в VBA. После некоторых исследований я решил использовать для этого массив вариантов, но мой код вообще ничего не возвращает в ячейки назначения. Может кто-нибудь заметить проблему с моим подразделом?

 Sub array_vt()


Dim Arr() As Variant
Dim Arr2() As Variant
Dim Fcst_Essbase As Worksheet
Dim fcst_tab As Worksheet
Dim fcst_rowcnt As Long

fcst_rowcnt = Sheets("Date Dims").Range("B7")
fcst_rowcnt2 = Sheets("Date Dims").Range("B9")
Set fcst_tab = Sheets("Cartesian Product - Fcst")
Set Fcst_Essbase = Sheets("Fcst Essbase Pull")
Arr = Fcst_Essbase.Range("A4:L" amp; fcst_rowcnt2)
Arr2 = fcst_tab.Range("A2:L" amp; fcst_rowcnt)

Dim R As Long
Dim C As Long

Dim Destination As Range
Set Destination = fcst_tab.Range("A2")

For R = 4 To UBound(Arr, 1) ' First array dimension is rows.
   For C = 1 To UBound(Arr, 2) ' Second array dimension is columns.
Destination.Resize(UBound(Arr2, 1), UBound(Arr2, 2)).Value = Arr

       Next C
    Next R

End Sub
 

Комментарии:

1. Для начала вам не нужны два цикла: Destination.Resize(UBound(Arr2, 1), UBound(Arr2, 2)).Value = Arr это все, что вам нужно, чтобы записать массив обратно на лист.

2. @BigBen вы спасаете меня сегодня от моих проблем с VBA для начинающих. Спасибо!

3. Хотя — почему вы смешиваете Arr2 и Arr в этой строке?

4. @BigBen после вашего совета я удалил переменную Arr2… Destination.Resize(fcst_rowcnt, 12).Value = Arr