Do While循环中的宏冻结

时间:2019-03-01 12:56:07

标签: vba

我的工作簿中有约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 :(得分:1)

您在循环中所做的一切都在内部

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

因此,当条件不成立时,循环将不执行任何操作,因此永远不会进行。

可能正确的做法是将Sheets(ActiveSheet.Index + 1).Activate移动到if条件之前。

相关问题