Суть проблемы: При копировании всей строки методом "выделение-растягивание угла вниз" и создания до 5-10 таких строк видно, как система начинает пересчитывать поля и тормозить. Такое же поведение если удалить 5-10-15 строк одновременно. Предполагаю, что это из-за деревянности моего макроса. Файл выкладываю без упрощений, поскольку зависания возникают именно в моем файле. Простого тестового файла с тормозами я не смог создать.
Буду признателен, если знатоки подскажут более быстрый макрос по записи даты изменения строки.
Worksheet_Change срабатывает при изменении на листе. Создаете строки - изменение. Rаждый раз макрос многократно срабатывает.
Отключить события перед изменениями: Application.EnableEvents = False В конце процедуры обязательно вернуть реагирование на события: Application.EnableEvents = True
Попутно. Если отключить обновление экрана, перед глазами н будет калейдоскопа из меняющихся картинок экрана Application.ScreenUpdating= False В конце процедуры вернуть обновление экрана (не обязательно, но лучше указать)
Да, можете поставить точку останова (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