删除具有特定值的单元格

时间:2014-07-23 14:01:09

标签: vba

我正在尝试做一些简单的事情。从日志框架信息中的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 个答案:

答案 0 :(得分: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