Здравствуйте уважаемые Форумчане,
Помогите пожалуйста с оптимизацией работы макроса.
Имеется рабочий файл, в котором администраторы распределяют людей по зонам работы.
Потом эти данные копируются из одного файла в другой файл в "умную" таблицу. Проблема заключается в том, что макрос, который я использую очень медленно переносит данные.
Помогите пожалуйста ускорить это, если это возможно. Файл пример приклеплен.
Здесь кусочек макроса, так как дальше процедура повторяется.
Спасибо за помощь.
Помогите пожалуйста с оптимизацией работы макроса.
Имеется рабочий файл, в котором администраторы распределяют людей по зонам работы.
Потом эти данные копируются из одного файла в другой файл в "умную" таблицу. Проблема заключается в том, что макрос, который я использую очень медленно переносит данные.
Помогите пожалуйста ускорить это, если это возможно. Файл пример приклеплен.
Здесь кусочек макроса, так как дальше процедура повторяется.
Спасибо за помощь.
Код |
---|
Dim Admin As Worksheet Dim Adminobj As ListObject Dim Adminrow As Listrow Dim cell As String, arrData, i As Long Set Admin = Workbooks("ROSTER Admin V1.0.xlsm").Worksheets("Shift Approval") Set Adminobj = Admin.ListObjects("Shiftapp_tb") With Workbooks("ROSTER DM V1.0.xlsm").ActiveSheet arrData = .Range("AS5").CurrentRegion For i = 3 To UBound(arrData, 1) If arrData(i, 31) = "Yes" Then Set Adminrow = Adminobj.ListRows.Add Adminrow.Range(3) = arrData(i, 32) Adminrow.Range(4) = arrData(i, 4) Adminrow.Range(5) = arrData(i, 5) Adminrow.Range(6) = arrData(i, 1) Adminrow.Range(7) = arrData(i, 2) Adminrow.Range(8) = arrData(i, 3) Adminrow.Range(9) = arrData(i, 6) Adminrow.Range(10) = arrData(i, 7) Adminrow.Range(11) = 0 Adminrow.Range(12) = arrData(i, 29) Adminrow.Range(13) = arrData(i, 10) Adminrow.Range(14) = arrData(i, 30) End If Next i End With With Workbooks("ROSTER DM V1.0.xlsm").ActiveSheet arrData = .Range("B5").CurrentRegion For i = 1 To UBound(arrData, 1) If arrData(i, 16) = "Yes" Then Set Adminrow = Adminobj.ListRows.Add Adminrow.Range(3) = arrData(i, 10) Adminrow.Range(4) = arrData(i, 13) Adminrow.Range(5) = arrData(i, 14) Adminrow.Range(6) = arrData(i, 2) Adminrow.Range(7) = arrData(i, 11) Adminrow.Range(8) = arrData(i, 12) Adminrow.Range(9) = arrData(i, 15) Adminrow.Range(10) = arrData(i, 9) Adminrow.Range(11) = arrData(i, 7) Adminrow.Range(12) = arrData(i, 6) Adminrow.Range(13) = arrData(i, 8) End If Next i End With |