VBA需求:删除含"USD Receipts:"单元格所在行及下方至空行的区域
解决VBA删除指定行至下方空行的问题
你的原代码问题在于使用Range("A" & Rows.Count).End(xlUp).Row获取了A列最后一个非空行的行号,导致删除范围直接延伸到表格末尾,而非你需要的空行位置。
以下是修正后的代码,会精准删除目标行及其下方直至空行的区域:
Sub NONHM() Dim Found As Range Dim endRow As Long ' 查找包含"USD RECEIPTS:"的单元格(xlPart匹配包含文本,忽略大小写) Set Found = Columns("A").Find(what:="USD RECEIPTS:", LookIn:=xlValues, lookat:=xlPart, MatchCase:=False) If Not Found Is Nothing Then ' 从目标行的下一行开始,定位第一个空行 endRow = Found.Row + 1 Do While Cells(endRow, "A").Value <> "" endRow = endRow + 1 Loop ' 删除目标行到空行的所有行(若不想删除空行本身,将endRow改为endRow - 1) Rows(Found.Row & ":" & endRow).Delete End If End Sub
代码说明:
- 替换了原代码中获取最后一行的逻辑,改为循环查找A列第一个空行的行号,确保删除范围仅到空行为止。
- 将
lookat:=xlWhole改为xlPart,匹配包含目标文本的单元格(符合你"包含文本"的需求),同时添加MatchCase:=False忽略大小写,增强兼容性。 - 若你不需要删除空行本身,只需把
Rows(Found.Row & ":" & endRow).Delete中的endRow改为endRow - 1即可。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

