Страницы: 1
RSS
ускорение работы макроса на событие листа
 
Всем,  
Здравствуйте!  
делаю файл для расчета зрпл  
на диапазон дат макрос, изменяющий вводимые данные  
он слегка тормозит  
в чем проблема?
 
Не вникая в суть обработки можно отметить, что какие-либо действия с Target внутри Worksheet_Change снова вызывают событие изменения, возникает рекурсивный вызов из процедуры самой себя:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
Target.ClearContents  
End Sub  
 
Нужно отключать события перед тем, как что-то делать с Target, чтобы исключить рекурсивный вызов события Worksheet_Change:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
Application.EnableEvents=False  
Target.ClearContents    
Application.EnableEvents=True  
End Sub
 
А Target = Target - явно лишнее, без него итак все есть, как и было.  
Недавно здесь приводился пример такого же кода, который без отключения событий подвешивал Excel 2007, а в Excel 2003 всего лишь тормозил
 
Вот Спасибо!  
очень помогло  
а я от необразованности думал, что у меня в другом файле эти строки лишние
 
Андрей, эти строки, действительно, можно не использовать, если внутри Worksheet_Change ничего не делать с ячейками, входящими в состав Target.  
Обычно такое делают от избытка ума или от жадности :-)
Страницы: 1
Читают тему
Наверх