2017-05-03 3 views
0

Meine Schleife bricht ein paar tausend Zeilen vor der letzten Zeile.Schleife zur letzten Zeile beim Hinzufügen von Zeilen

sagen Lassen letzte Reihe ist ein guter Punkt bis zu 12000, seine Looping bis 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

Was ist der Datentyp von 'Lastrow'? Wie viele Zeilen sind in Ihrem Blatt verfügbar? –

+1

und was meinst du mit "breaking" ist es ein Fehler, nur zu stoppen, in zufälligen Text setzen ... – sous2817

+0

@ sous2817 es gibt mir keinen Fehler, nur zu stoppen. Ich habe 11000 Reihen, dann füge ich mehr Reihen hinzu, indem ich thats einlege, warum ich i = i + 1 verwende, also mein lastrow, das bis 12000 addiert. So stoppt es bei 9800. Kann nicht herausfinden, warum – user3713336

Antwort

0

macht @Nathan_Sav. Ich bin mir nicht sicher, wie die i = i + 1 und Next i miteinander interagieren. Ich würde versuchen, es so aus:

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 

Ohne Daten, die diese gegen testen oder den Rest des Codes, ist es schwer, sicher zu sein, dies funktionieren wird ... so lassen Sie mich wissen, wie Sie auf bekommen.

+0

i = i + 1 was zum Einfügen von Zeile ist, muss ich Zeile zu nächsten einfügen, andere wird es weiter zu wiederholen. – user3713336

+0

Ja, das verstehe ich. Ist mein Versionsfehler auf die gleiche Weise? –

+0

@ Steve Lovell kein Fehler, es funktioniert perfekt ... fantastisch ... können Sie mir bitte sagen, wie wussten Sie, dass Sie auf diese Weise tun müssen, was ist der Unterschied zwischen während und für ... Vielen Dank – user3713336

Verwandte Themen