VBA Excel - 如果某个单元格为空,则删除行的所有条目

时间:2017-05-23 14:03:42

标签: excel vba excel-vba

我正在尝试提供一个代码,如果该行的相应B单元格为空,将删除行的所有条目。

例如,如果B4为空,则代码应删除C4:AU4中的所有条目。它应该对从B3开始到MaxRowList的预定义值的所有行执行此操作。

到目前为止我唯一想出的就是

Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

但是这会从工作表中删除完整的行,这会破坏安排。重要的是它只删除相应$ C $:$ AU $范围内的条目,并且不删除该行。

3 个答案:

答案 0 :(得分:2)

只需使用IntersectClearContents

Sub tgr()

    With ActiveWorkbook.ActiveSheet
        Intersect(.Range("C:AU"), .Columns("B").SpecialCells(xlCellTypeBlanks).EntireRow).ClearContents
    End With

End Sub

答案 1 :(得分:1)

我假设您要清除单元格的内容,而不是删除它们(这会移动到下方或右侧单元格的内容)? 尝试

dim ws as worksheet
set ws = activesheet ' <== Replace with whatever sheet you are working.
Dim emptyCells As Range, cell As Range
Set emptyCells = ws.Columns("B:B").SpecialCells(xlCellTypeBlanks)
For Each cell In emptyCells
    Dim r As Range
    Set r = ws.Range("C" & cell.row & ":AE" & cell.row)
    r.Clear
Next cell

答案 2 :(得分:1)

不确定是否可以避免循环。愚蠢的我,当然是 - 见@tigeravatar。

Sub x()

Dim r As Range

For Each r In Columns("B:B").SpecialCells(xlCellTypeBlanks).Offset(, 1)
    r.Resize(, 45).Clearcontents
Next r

End Sub