Excel VBA For循环循环太早

当我遍历代码时,在“Cells(r_count,5)= temp + totalDays”行之后,它回到“For c_count”循环的开头,代码永远不会到达Next部分,所以计数器不被侵犯。

For c_count = 7 To 42 Step 5 For r_count = 4 To 80 If Cells(r_count, c_count) = "pass" Then If Not (IsEmpty(Cells(r_count, (c_count + 1)))) Then If Not (IsEmpty(Cells(r_count, (c_count + 2)))) Then s_date = Cells(r_count, (c_count + 1)) e_date = Cells(r_count, (c_count + 2)) totalDays = DateDiff("d", s_date, e_date) temp = Cells(r_count, 5) Cells(r_count, 5) = temp + totalDays End If End If End If Next r_count Next c_count 

我必须监督我的代码中的一些愚蠢的东西。 我应该把我的IF声明变成一个而不是多个声明? 任何帮助?

这个代码被Worksheet_Change事件调用了吗? 我假设,因为你说Cells(r_count, 5) = temp + totalDays行它回到开始 – 这是因为这行设置单元格的值,因此触发Worksheet_Change事件,这也是为什么它最终完成。

如果是这样,那么你可以在进行更新的时候将Application.EnableEvents设置为False(实际上是Philip的build议)。 例如:

 Private Sub Worksheet_Change() Application.EnableEvents = False ....your code here.... Application.EnableEvents = True End Sub