Удаляется только половина записей - с помощью цикла Loop (VBA) - PullRequest
0 голосов
/ 26 января 2012

Таким образом, только половина записей, которые ищутся, удаляется.PFB фрагмент кода.Пример: существует 32 экземпляра CityName.Удаляется только 16.

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

Это связано с обратным подходом?Любая помощь или направление приветствуется.Спасибо!

1 Ответ

3 голосов
/ 26 января 2012

Это потому, что если вы удаляете строку 2, то то, что раньше было строкой 3, теперь становится строкой 2. Поэтому вам нужно смещать ссылки при каждом удалении строки

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