当我单步执行代码时,在“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语句分为一个而不是多个语句吗?有什么帮助吗?
答案 0 :(得分:2)
这个代码是否被Worksheet_Change事件调用了?我假设是因为你在Cells(r_count, 5) = temp + totalDays
行说它回到开头 - 这是因为这一行设置了单元格的值,因此触发了Worksheet_Change事件,这也是它最终完成的原因。
如果是这样,那么您可以在执行更新时将Application.EnableEvents设置为False(实际上是Philip的建议)。例如:
Private Sub Worksheet_Change()
Application.EnableEvents = False
....your code here....
Application.EnableEvents = True
End Sub