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
,因为您总是在插入行的上方处理下一行。谢谢大家的提示。