Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 在循环本身内更新For循环的结尾_Excel_Vba - Fatal编程技术网

Excel 在循环本身内更新For循环的结尾

Excel 在循环本身内更新For循环的结尾,excel,vba,Excel,Vba,今天下午我试图创建一个循环,循环的结尾是灵活的,因为循环中的代码在已经存在的行之间添加了行 For row = 2 To LastRow If Not wks.Cells(row, 13) = 0 Or Not IsEmpty(wks.Cells(row, 13)) Then wks.Cells(row, 15) = ini add = wks.Cells(row, 13).Value - 1 Range(Cells(row + 1, 1)

今天下午我试图创建一个循环,循环的结尾是灵活的,因为循环中的代码在已经存在的行之间添加了行

For row = 2 To LastRow
    If Not wks.Cells(row, 13) = 0 Or Not IsEmpty(wks.Cells(row, 13)) Then
        wks.Cells(row, 15) = ini
        add = wks.Cells(row, 13).Value - 1
        Range(Cells(row + 1, 1), Cells(row + 1 + add, 15)).Insert Shift:=xlDown
        LastRow = LastRow + add

    Else
        wks.Cells(row, 15).Value = wks.Cells(row - 1, 15).Value + 1
    End If
Next row
然而,我发现一旦循环开始,它就会取LastRow的值,并将该值保留为结束值。因此,我更新LastRow的代码只更新了变量,而没有更新循环的结尾

我通过计算LastRow的最终值轻松解决了这个问题,因为它是第13/M列中所有值的总和。因此,我删除了
LastRow=LastRow+add
,并使用以下代码:

LastRow = wks.Cells(wks.Rows.Count, "M").End(xlUp).row
LastRow1 = LastRow
For row1 = 2 To LastRow
    LastRow1 = LastRow1 + Cells(row1, 13).Value
Next row1

现在,我想知道是否有一种方法可以让循环在每次写入之后评估变量,以便它总是采用最新的值?

@ScottCraner,如
中所述,而row
?在这里,您应该只是反向循环。@Rory<代码>对于行=最后一行到第2步-1类似的情况?是的。这样,您就不需要尝试重新计算
LastRow
,因为您总是在插入行的上方处理下一行。谢谢大家的提示。