#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