我正在尝试提供一个代码,如果该行的相应B单元格为空,将删除行的所有条目。
例如,如果B4为空,则代码应删除C4:AU4中的所有条目。它应该对从B3开始到MaxRowList的预定义值的所有行执行此操作。
到目前为止我唯一想出的就是
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
但是这会从工作表中删除完整的行,这会破坏安排。重要的是它只删除相应$ C $:$ AU $范围内的条目,并且不删除该行。
答案 0 :(得分:2)
只需使用Intersect
和ClearContents
:
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