2017-08-31 154 views
0

我是新到Excel VBA和已經看過了一些關於這個問題和答案,但不明白爲什麼我的宏不工作。我有:刪除行如果單元格包含「V」的Excel VBA

i = 1 
For Each row In ActiveSheet.UsedRange.Rows 
    'test for v in column f and delete if there isn't one 
    str = Cells(i, "F").Value 
    If InStr(1, str, "V") <> 0 Then 
     Debug.Print str 
    Else 
     Rows(i).Delete    
    End If 

這會打印出包含V的每個str,但不會刪除else之後的行。我錯過了什麼?我試過行(I).EntireRow.Delete但也不能工作。

感謝

回答

0

你是不是增加我和它沒有正確地與您的第一行初始化它的使用範圍行。所以,在你的情況下,始終停留在1

在許多情況下用for-each循環,你不會使用我計數器,但有時你會的。

解決方法:更換 與str = Cells(i, "F").Valuestr = range(row.row, "F").Value

row.Delete

最後更換Rows(i).Delete,你需要一個next在年底或你會得到一個編譯錯誤。這將完成你的for-each循環。

+0

感謝。我確實有增量和下一步,但忘了複製它們。我對當你需要我計數器有點混亂,當你的循環不會在和我只是用試錯(比此時更審的錯誤),試圖弄明白。 – Madeline

相關問題