2017-05-03 95 views
0

我的循环在最后一行之前打破了几千行。在添加行时循环到最后一行

比方说,最后一行是高达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 
+0

'lastrow'的数据类型是什么?您的工作表中有多少行可用? –

+1

你是什么意思的“打破”是一个错误,只是停止,随机文本... – sous2817

+0

@ sous2817它不给我任何错误,只是停止。我有11000行,然后我通过插入多行来添加更多的行,为什么我使用i = i + 1,所以我的lastrow加起来是12000.所以它停在9800.不知道为什么 – user3713336

回答

0

@Nathan_Sav使得一个好点。我不确定i = i + 1Next 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 

没有数据来检验这个对,或代码的其余部分,这是很难确定这将工作......所以让我知道你上车。

+0

i = i + 1这是插入行,我必须插入行到下一个其他明智它将继续重复。 – user3713336

+0

是的,我明白了。我的版本是否以同样的方式出错? –

+0

@ steve lovell没有错误,它的工作完美...真棒...你能告诉我你怎么知道你必须这样做,有什么区别,同时和...非常感谢你 – user3713336

相关问题