2016-07-19 12 views
0

次は、基本的に私は、1と0の完全な列を持っている私は行の削除

For i = 5 To LastRow 

Cells(i, 13).Select 

    var2 = Cells(i, 13) 

    If var2 = 0 Then 

    Rows(i).Delete 

    Else 

    var3 = 1 

    End If 

Next i 

を実行しようとしていたコードを例示しています。セルにゼロが含まれている場合は、列を削除する必要があります。隣接するセルに0が含まれていると、私の問題が発生します。コードはセルを削除し、0の進行する行は上にシフトし、ループは次の行に移動し、上に移動したゼロがありません。

誰にでも解決策があります。

+0

あなたはいつもあなたが望むの列に0をフィルタリングすることができフィルタリングされた行 – Splendonia

答えて

1

行はcollectionなので、繰り返しを繰り返してコレクションの一部を削除すると、コレクションの上限が減少します。ループが開始されて以来、コレクションは常に同じサイズになると期待しています。

かいつまん:コレクションを後方ループ、あなたは常にあなたがそれから何かを削除しても、同じ相対的な場所になります:

'For i = LastRow To 5 step - 1 

'Cells(i, 13).Select 

' var2 = Cells(i, 13) 

' If var2 = 0 Then 

' Rows(i).Delete 

' Else 

' var3 = 1 

' End If 

'Next i 
+0

が削除されました。どうもありがとうございました。 :O) – FMorelli