Excel VBA过早循环循环

时间:2012-12-27 16:28:00

标签: excel vba

当我单步执行代码时,在“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语句分为一个而不是多个语句吗?有什么帮助吗?

1 个答案:

答案 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