我的工作簿中有约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
答案 0 :(得分:1)
您在循环中所做的一切都在内部
If ActiveSheet.Visible = True Then
Sheets(ActiveSheet.Index + 1).Activate
*SOME PROCEDURES*
End If
因此,当条件不成立时,循环将不执行任何操作,因此永远不会进行。
可能正确的做法是将Sheets(ActiveSheet.Index + 1).Activate
移动到if条件之前。