Товарищи, подскажите где я "накрутил" ненужное или куда думать чтоб оптимизировать код:
всё работает корректно, но долго.
Код |
---|
Sub EditNextYear(ByRef yeargraf As Integer, wbName As String) Dim DatListObj As ListObject Dim DatListRow As ListRow With Workbooks(wbName).Sheets("график ТО") .Activate ' редактирование нового графика ТО .Range("grafik_TO_tb[дата ТО/ диагн.]").ClearContents .Range("grafik_TO_tb[№ акта ТО]").ClearContents .Range("grafik_TO_tb[дата согласов.]").ClearContents .Range("grafik_TO_tb[организация проводившая ТО]").ClearContents .Range("grafik_TO_tb[дата след. ТО]").Cut Range("grafik_TO_tb[дата ТО/ диагн.]") End With Set DatListObj = Workbooks(wbName).Worksheets("график ТО").ListObjects("grafik_TO_tb") Set DatListRow = DatListObj.ListRows(1) yeargraf = Year(DatListRow.Range(13)) For Each DatListRow In DatListObj.ListRows If DatListRow.Range(17).Value <> "" Then DatListRow.Range(12).Value = DatListRow.Range(17).Value DatListRow.Range(17).Value = "" End If If DatListRow.Range(25).Value <> "" And Year(DatListRow.Range(25)) = yeargraf - 1 Then DatListRow.Range(12).Value = DatListRow.Range(25).Value End If If DatListRow.Range(27).Value <> "запрет" Then If Year(DatListRow.Range(27)) = yeargraf Or Year(DatListRow.Range(27)) < yeargraf Then DatListRow.Range(31).Value = "диагностика" Else DatListRow.Range(31).Value = "т/о" End If End If Next DatListRow Workbooks(wbName).Sheets("график ТО").Range("grafik_TO_tb[дата ТО/ диагн.]").NumberFormat = "mmm/yyyy" End Sub |
всё работает корректно, но долго.