2017-05-03 67 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

相關問題