2012-01-26 3 views
0

したがって、検索されるレコードの半分だけが削除されます。コードスニペットをPFBします。例:CityNameの32インスタンスが存在します。 16個だけが削除されます。ハーフレコードのみ削除 - Whileループ(VBA)を使用

i As Long, lngEndRowInv As Long 
Set wsh = ThisWorkbook.ActiveSheet  
i = 1 
lngEndRowInv = wsh.Range("A" & Rows.Count).End(xlUp).Row 
While i <= lngEndRowInv 
If Cells(i, "A") = "CityName" Then 
Cells(i, "A").EntireRow.Delete 
End If 
i = i + 1 
Wend 

これは逆のアプローチと関係がありますか?どんな助けや方向性もありがとうございます。ありがとう!

答えて

3

あなたが行2を削除した場合ので、その後、どのような以前の行3であったことは、今あなたは、あなたがそんなに

If Cells(i, "A") = "CityName" Then 
    Cells(i, "A").EntireRow.Delete 
    i = i -1 
    lngEndRowInv = lngEndRowInv -1 
End If 
+0

おかげで行を削除するたびに、あなたの参照を相殺するために必要な2行されています。学習曲線上で。 – user823911

+0

心配はいりません。私はあなたのスクリプトの単純版を表示していたと仮定していました。より速い方法は... 'wsh.Range(wsh.Cells(1,1)、wsh.Cells(lngEndRowInv、1))。Rows.Delete' – Skytunnel

+1

または単に後方にループします。行数をi = 1にする代わりに、i =行カウントを1ステップ-1にします。 – Jesse

関連する問題