У меня относительно простой вопрос. В настоящее время у меня есть код, который работает хорошо, но не эффективно. У меня есть около 500 учетных центров, каждый со своей рабочей книгой, которую я объединил в центральное хранилище (ссылка - Wb2
в коде ниже). Код копирует диапазоны из каждого открытого шаблона (Wb1
) в мою консолидацию (Wb2
). Пример кода ниже (полный код не требуется).
Option Explicit
Sub CopyData()
Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook
Dim rngToCopy1 As Range
Dim rngToCopy2 As Range
Dim rngToCopy3 As Range
Dim rngToCopy4 As Range
Dim rngToCopy5 As Range
Set wb2 = ThisWorkbook
Application.Calculation = xlManual
For Each wB In Application.Workbooks
If Not Left(wB.Name, 18) = "Consolidation Test" Then
Set Wb1 = wB
Exit For
End If
Next
'Forecast Data
With Wb1.Sheets(1)
Set rngToCopy1 = .Range("A11:O11", .Cells(.Rows.Count, "A").End(xlUp))
End With
wb2.Sheets(7).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(rngToCopy1.Rows.Count, 15).Value = rngToCopy1.Value
wb2.Sheets(7).Range("P" & Rows.Count).End(xlUp).Offset(1).Resize(rngToCopy1.Rows.Count).Value = Sheets(3).Range("J1").Value
Я попытался просто изменить в качестве примера wB2.Sheets(7)
на Wb2.Sheets("Forecast_Data")
, а также оригинальное имя в VBE wB2.Sheets("Sheet4")
, но я получаю индекс вне ошибки ошибки?
В дополнение к решению, пожалуйста, предоставьте также информацию о том, почему исправление не так просто, связано ли это с тем, как мои переменные объявляются?