2014-07-23 74 views
0

我正在嘗試做一些簡單的操作。從日誌框架信息中的N列僅複製從下拉菜單的B62開始的唯一值 - 此部分起作用!然後,如果B62:B80中的其中一個值是「其他」,則刪除該單元格 - 此部分有時會起作用,而不是其他人,因此無法說明原因。幫幫我!刪除具有特定值的單元格

Sub test() 


Dim RngDest As Range 
Dim Rng As Range, Cell As Range 

Sheets("Dropdowns").Range("b61:b80").ClearContents 

Set Rng = Sheets("Log Frame Info").Range("N4:N500") 
Set RngDest = Sheets("Dropdowns").Range("B62") 

Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=RngDest, Unique:=True 

With Sheets("Dropdowns") 
    Set Rng = Range("B61:b80") 
    For Each Cell In Rng 
     If Cell = "Other" Then 
      Cell.Delete 
     End If 
    Next Cell 
End With 
End Sub 

回答

1

的原因是因爲一旦電池已被刪除,For循環繼續下一個單元格,而不是評估電池的新的價值。這樣的事情應該工作,因爲它在細胞已被刪除計數和抵消If電話:

Sub test() 

Dim RngDest As Range 
Dim Rng As Range, Cell As Range 
Dim i As Integer 

Sheets("Dropdowns").Range("b61:b80").ClearContents 

Set Rng = Sheets("Log Frame Info").Range("N4:N500") 
Set RngDest = Sheets("Dropdowns").Range("B62") 

Rng.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=RngDest, Unique:=True 

With Sheets("Dropdowns") 
    Set Rng = Range("B61:b80") 
    For Each Cell In Rng 
     If Cell.Offset(-i, 0) = "Other" Then 
      Cell.Delete 
      i = i + 1 
     End If 
    Next Cell 
End With 
End Sub 
+2

我想補充從未低估了'步驟-1'的力量。如果你可以計數你的細胞,你可能願意從最後一個開始刪除它們,所以當計數器減少時(以-1步),你的「下一個」細胞實際上在那裏。 – Noldor130884

相關問題