1

当我单步执行代码时,在“Cells(r_count, 5) = temp + totalDays”行之后,它会回到“For c_count”循环的开头,并且代码永远不会进入下一部分,因此计数器没有被定罪。

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 语句变成一个而不是多个语句吗?有什么帮助吗?

4

1 回答 1

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
于 2012-12-27T17:07:28.483 回答