删除单元格取决于其值可以正常工作,但跳过了一半

时间:2019-07-10 21:42:38

标签: excel vba

如果2个单元格为=“”,我需要从第2行开始删除同一行中的2个或更多(视工作而定)单元格

我使用了这段代码,除了1个问题外,它已经可以正常工作

Sub Macro3()
    Dim s As Integer
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("Sheet2")

    For s = 2 To 22
        If ws.Range("G" & (s)) = "" And ws.Range("H" & (s)) = "" Then
            Union(ws.Range("G" & s), ws.Range("H" & s)).Select
            Selection.Delete Shift:=xlUp
        End If
    Next s
End Sub

问题是,例如,如果我有G2:H4(达到2行或更多的if条件),它只会删除其中一半,

如果5行仅删除3条...等

所以我认为循环不会在当前单元格上运行(只是猜测)

附加屏幕位于运行代码之前和之后,以便更清楚

之前

before

之后

after

1 个答案:

答案 0 :(得分:2)

Sub Macro3()

Dim s As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Sheet2")

For s = 22 To 2 Step -1

    If ws.Range("G" & s).Value = "" And ws.Range("H" & s).Value = "" Then 
        ws.Rows(s).Delete Shift:=xlUp
        'or:
        'ws.Range("G" & s & ":H" & s).Delete Shift:=xlUp
    End if

Next s

End Sub

运行代码后:
enter image description here