aivella, оформите код тегами с помощью кнопки # в режиме правки поста. Offset(0, 0) точно можно убрать. И да, менять параметр цикла z в цикле - плохая идея. Думаю, дело не в Offset
aivella, оформите код тегами с помощью кнопки # в режиме правки поста. Offset(0, 0) точно можно убрать. И да, менять параметр цикла z в цикле - плохая идея. Думаю, дело не в OffsetPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Отключите обновление экрана, и если Вам не нужно на изменение каждой ячейки где-то получать результат обсчёта этой ячейки формулами - то и пересчёт тоже есть смысл на время работы выключить.
Например вот, кардинально выключаем всё: [vba]
Код
Dim global_var_calc_state As Integer, global_var_calc_bfr_sv_state As Boolean
Sub Kakoetonazvanie() Call uskorenie
Dim zelle As Range For Each Z In ActiveSheet.Range("E150:E250") If IsEmpty(Z.Value) = True Then Z = Z.Offset(0, -2) End If Next Z
Call neuskorenie End Sub
Sub uskorenie() With Application global_var_calc_state = .Calculation global_var_calc_bfr_sv_state = .CalculateBeforeSave .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False .DisplayStatusBar = False .DisplayAlerts = False End With End Sub Sub neuskorenie() With Application .Calculation = global_var_calc_state ' xlCalculationAutomatic .CalculateBeforeSave = global_var_calc_bfr_sv_state .ScreenUpdating = True .EnableEvents = True .DisplayStatusBar = True .DisplayAlerts = True End With End Sub
[/vba]
Отключите обновление экрана, и если Вам не нужно на изменение каждой ячейки где-то получать результат обсчёта этой ячейки формулами - то и пересчёт тоже есть смысл на время работы выключить.
Например вот, кардинально выключаем всё: [vba]
Код
Dim global_var_calc_state As Integer, global_var_calc_bfr_sv_state As Boolean
Sub Kakoetonazvanie() Call uskorenie
Dim zelle As Range For Each Z In ActiveSheet.Range("E150:E250") If IsEmpty(Z.Value) = True Then Z = Z.Offset(0, -2) End If Next Z
Call neuskorenie End Sub
Sub uskorenie() With Application global_var_calc_state = .Calculation global_var_calc_bfr_sv_state = .CalculateBeforeSave .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False .DisplayStatusBar = False .DisplayAlerts = False End With End Sub Sub neuskorenie() With Application .Calculation = global_var_calc_state ' xlCalculationAutomatic .CalculateBeforeSave = global_var_calc_bfr_sv_state .ScreenUpdating = True .EnableEvents = True .DisplayStatusBar = True .DisplayAlerts = True End With End Sub
"Отключите обновление экрана, и если Вам не нужно на изменение каждой ячейки где-то получать результат обсчёта этой ячейки формулами - то и пересчёт тоже есть смысл на время работы выключить."
это обходной путь... надеялась, что есть напрямую через облегчение кода...
Спасибо за совет, Hugo!
"Отключите обновление экрана, и если Вам не нужно на изменение каждой ячейки где-то получать результат обсчёта этой ячейки формулами - то и пересчёт тоже есть смысл на время работы выключить."
это обходной путь... надеялась, что есть напрямую через облегчение кода...aivella
Так у нас же всё общее, симбиотическое. Вы добавьте Call uskorenie / Call neuskorenie от Hugo (надеюсь, он не против) и в мой код - наверное, будет повеселее.
Так у нас же всё общее, симбиотическое. Вы добавьте Call uskorenie / Call neuskorenie от Hugo (надеюсь, он не против) и в мой код - наверное, будет повеселее.Gustav
Я не против. Тем более что это и не моё Где позаимствовал - каюсь не записал... Но принцип общеизвестный - если многократно изменяются ячейки листа, то для ускорения нужно отключать все лишние реакции.
Я не против. Тем более что это и не моё Где позаимствовал - каюсь не записал... Но принцип общеизвестный - если многократно изменяются ячейки листа, то для ускорения нужно отключать все лишние реакции.Hugo