Страницы: 1
RSS
Макрос: Дата изменения строки(нескольких ячеек), Написанный макрос тормозит, нужна помощь.
 
Приветствую!

Суть проблемы: При копировании всей строки методом "выделение-растягивание угла вниз" и создания до 5-10 таких строк видно, как система начинает пересчитывать поля и тормозить. Такое же поведение если удалить 5-10-15 строк одновременно.
Предполагаю, что это из-за деревянности моего макроса.
Файл выкладываю без упрощений, поскольку зависания возникают именно в
моем файле. Простого тестового файла с тормозами я не смог создать.

Буду признателен, если знатоки подскажут более быстрый макрос по записи даты изменения строки.
Изменено: BUGL - 20.07.2015 14:08:01
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
 
Worksheet_Change срабатывает при изменении на листе.
Создаете строки - изменение. Rаждый раз макрос многократно срабатывает.

Отключить события перед изменениями: Application.EnableEvents = False
В конце процедуры обязательно вернуть реагирование на события: Application.EnableEvents = True

Попутно. Если отключить обновление экрана, перед глазами н будет калейдоскопа из меняющихся картинок экрана
Application.ScreenUpdating= False
В конце процедуры вернуть обновление экрана (не обязательно, но лучше указать)
 
vikttur, т.е. это получается, что макрос входит в рекурскию? Сам меняет, сам проверяет?
Изменено: BUGL - 20.07.2015 15:05:29
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
 
Да, можете поставить точку останова (F9) на начало процедуры и пройти по шагам (F8).
Можно проверять не отдельные столбцы, а диапазон целиком:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
  On Error Resume Next
  Application.EnableEvents = False
  For Each cell In Intersect(Target, Range("F3:I1000")).Rows
    Cells(cell.Row, "N").Value = Now
  Next
  Application.EnableEvents = True
End Sub

 
Казанский, vikttur, Спасибо! Стало лучше!
Нет ТЗ - получишь ХЗ.
Люблю универсально-стандартные решения, даже если они сложнее
Страницы: 1
Наверх