Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Форумы "Планета Excel" » Вопросы по Microsoft Excel
Страницы: 1
RSS
[ Закрыто ] VBA: Оптимизация кода
 
Товарищи, подскажите в какую сторону думать чтоб оптимизировать код:
Код
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

Всё работает норм, но обработка таблицы в 900 строк занимает порядка полутора минут. Где я накрутил ненужное?
 
Правила, название темы
Страницы: 1
Читают тему (гостей: 1)