Excel 添加行时循环到最后一行
我的循环在最后一行之前中断了几千行 假设最后一行是12000,它的循环直到9800Excel 添加行时循环到最后一行,excel,vba,macos,Excel,Vba,Macos,我的循环在最后一行之前中断了几千行 假设最后一行是12000,它的循环直到9800 For i = 2 To lastrow If ws.Cells(i, 2).Value = "4" Then Rows(i).Insert Range("E" & i).Value = ws.Cells(i + 1, 5) i = i + 1 lastrow = lastrow + 1 End If Next i @N
For i = 2 To lastrow
If ws.Cells(i, 2).Value = "4" Then
Rows(i).Insert
Range("E" & i).Value = ws.Cells(i + 1, 5)
i = i + 1
lastrow = lastrow + 1
End If
Next i
@Nathan_Sav提出了一个很好的观点。我不确定
I=I+1
和Next I
如何相互作用。我会这样尝试:
i = 2
While i <= lastrow
If ws.Cells(i, 2).Value = "4" Then
Rows(i).Insert
Range("E" & i).Value = ws.Cells(i + 1, 5)
i = i + 1
lastrow = lastrow + 1
End If
i = i + 1
Wend
i=2
而我知道lastrow
的数据类型是什么?您的工作表中有多少行可用?您所说的“中断”是什么意思?它是一个错误,只是停止,输入随机文本…@sous2817它没有给我任何错误,只是停止。我有11000行,然后我通过插入来添加更多行,这就是为什么我使用I=I+1,所以我的最后一行加起来是12000行。所以它停在9800点。我想不出为什么i=i+1是用来插入行的,我必须将行插入下一行,否则它会不断重复。是的,我明白了。我的版本也有同样的错误吗?@steve lovell没有错误,它工作得很完美。。。令人惊叹的。。。你能告诉我你是怎么知道你必须这样做的吗?while和for之间的区别是什么。。。非常感谢@steve Lovell——还有一个问题,为什么在结束后再添加一个i=i+1?如果这只是猜测,我想知道当您已经添加1时,下一个i
是否不会增加,因为它只是确保循环的每一次迭代都比开始时高一个。