Im在excel vba中編寫一個簡單的宏,如果第一個單元格有特定的文本,它將刪除整行。 這裏是到目前爲止的代碼:Excel VBA For Each skipping cells
Sub MyMacro()
For Each MyCell In Worksheets("Hoja2").Range("A1:A20")
If MyCell.Value = "BORRAR" Then
MyCell.EntireRow.Delete
End If
Next
End Sub
我Sheet2中(Hoja2)僅僅有兩列,第一列是完全「BORRAR」從A1到A20和第二列具有唯一號碼,從1到20。
如果我激活宏,它會刪除除2,4,6,8,10,12,14,16,18和20以外的每一行。 如果我再次激活宏,它會刪除除了4,8之外的所有內容,12,16,20 如果我再次激活宏,它將刪除除8,16 等以外的所有內容。
這是怎麼發生的?據我瞭解,我的宏一個接一個地檢查第一列的單元格是否包含單詞「BORRAR」,如果是,則刪除整行。爲什麼要刪除2,4,8 ......的倍數?
答案有問題本身 – Raghavendra
當你刪除行時,你需要通過行後退。嘗試一個循環,如'For I = lastrow to 2 Step -1' – Gareth
這意味着下一行佔用了刪除的行。但索引被移動一個內核中的下一行單元內部爲 – Raghavendra