Замораживание макросов в цикле Do While - PullRequest
0 голосов
/ 01 марта 2019

У меня в рабочей книге ~ 30 листов, и я хочу выполнить какое-то действие с листами, расположенными между моими флагами (Начало и Конец).Но иногда (с вероятностью ~ 80%) мой макрос зависает (не отвечает) в цикле.Иногда я могу сломать его, нажать «отладка», нажать F5 и макрос завершится правильно.Это работает правильно, если я делаю точку останова в начале цикла и нажимаю F5 каждый цикл.Но если я запускаю макрос без точек останова - его замораживание Почему это происходит?Как я могу оптимизировать свой код?

Это мой код

Sub DataPreparation()
Dim ws As Worksheet

ClearData

rowToEnter = 2
Worksheets("Start").Activate
Do While Not Sheets(ActiveSheet.Index + 1).Name Like "End*"
    If ActiveSheet.Visible = True Then
        Sheets(ActiveSheet.Index + 1).Activate
        *SOME PROCEDURES*
    End If
Loop

DeleteEmptyRows

End Sub

1 Ответ

0 голосов
/ 01 марта 2019

Все, что вы делаете в вашем цикле, находится внутри

If ActiveSheet.Visible = True Then
    Sheets(ActiveSheet.Index + 1).Activate
    *SOME PROCEDURES*
End If

Поэтому, когда условие не выполняется, цикл ничего не делает и поэтому никогда не прогрессирует.

Вероятно, правильнее всего сделать Sheets(ActiveSheet.Index + 1).Activate перед условием if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...