Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA用于循环循环太早_Excel_Vba - Fatal编程技术网

Excel VBA用于循环循环太早

Excel VBA用于循环循环太早,excel,vba,Excel,Vba,当我单步遍历代码时,在“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_coun

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

工作表更改事件是否会调用此代码?我这样假设是因为您在
单元格(r_count,5)=temp+totalDays
行中说它返回到开始-这是因为这一行设置单元格的值,从而触发工作表更改事件,这也是它最终完成的原因

如果是这样,则可以在执行更新时将Application.EnableEvents设置为False(实际上是Philip的建议)。例如:

Private Sub Worksheet_Change()

    Application.EnableEvents = False

    ....your code here....

    Application.EnableEvents = True

End Sub

temp+totalDays等于什么?用户1932554请在第行
code
下面添加步骤,对于r_count=4到80Hiten004,我尝试了步骤1,它做了同样的事情。melanie,temp+totalDays等于正确的数字。(单元格中存储的内容(温度)和日期差异)。但它会返回到“For c_count…”并再次开始,使用相同的c_count和r_count number.temp+totalDays值高于80??无需全局变量。查看
应用程序。EnableEvents
是的,很好。我习惯于使用全局变量作为EnableEvents,这对UserForm控件事件不起作用,但在这里更合适。我已经把我的答案编辑好了。非常感谢你!