2012-01-26 27 views
0

因此,只有一半的搜索記錄被刪除。 PFB的代碼片段。例如:存在32個CityName實例。只有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排現在2.所以,你需要在每次抵消你引用刪除一行

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

非常感謝。在學習曲線上。 – user823911

+0

不用擔心。我假設你只是顯示你的腳本的簡化版本。因爲更快的方法是... 'wsh.Range(wsh.Cells(1,1),wsh.Cells(lngEndRowInv,1)).Rows.Delete' – Skytunnel

+1

或者你只是向後循環。而不是i = 1到rowcount do i = rowcount to 1 step -1。 – Jesse