Здравствуйте. Макрос, который удаляет строки , очень медленно работает из-за второго макроса обработки события Private Sub Worksheet_Change(ByVal Target As Range). Подскажите, можно ли это как-то исправить. Спасибо.
Здравствуйте. Макрос, который удаляет строки , очень медленно работает из-за второго макроса обработки события Private Sub Worksheet_Change(ByVal Target As Range). Подскажите, можно ли это как-то исправить. Спасибо.karmen185
И простановку даты я бы написал немного иначе [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d0 As Range, d As Range Application.ScreenUpdating = 0 'обновление экрана Application.Calculation = 3 'автопересчет формул Application.EnableEvents = 0 'события Excel Set d0 = Intersect(Target, Range("C3:C7")) 'пересечение измененных ячеек и диапазона. ОДИН раз If Not d0 Is Nothing Then 'если оно есть For Each d In d0 'пробегаемся по егойным ячейкам With d 'для каждой из них If .Value <> "" Then 'если она не пустая (нужно ли - не знаю) .Offset(0, 1) = Date 'в соседнюю справа ставим дату End If End With Next d Columns(4).EntireColumn.AutoFit 'изменяем ширину столбца. ОДИН раз End If Application.EnableEvents = 1 Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
И простановку даты я бы написал немного иначе [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d0 As Range, d As Range Application.ScreenUpdating = 0 'обновление экрана Application.Calculation = 3 'автопересчет формул Application.EnableEvents = 0 'события Excel Set d0 = Intersect(Target, Range("C3:C7")) 'пересечение измененных ячеек и диапазона. ОДИН раз If Not d0 Is Nothing Then 'если оно есть For Each d In d0 'пробегаемся по егойным ячейкам With d 'для каждой из них If .Value <> "" Then 'если она не пустая (нужно ли - не знаю) .Offset(0, 1) = Date 'в соседнюю справа ставим дату End If End With Next d Columns(4).EntireColumn.AutoFit 'изменяем ширину столбца. ОДИН раз End If Application.EnableEvents = 1 Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub