Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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 添加行时循环到最后一行_Excel_Vba_Macos - Fatal编程技术网

Excel 添加行时循环到最后一行

Excel 添加行时循环到最后一行,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

我的循环在最后一行之前中断了几千行

假设最后一行是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

@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
是否不会增加,因为它只是确保循环的每一次迭代都比开始时高一个。