VBA:如何删除Excel中过滤的行?

标签 vba excel excel-2007

我有一个包含一些数据的 Excel 表格。通过使用下一个 vba 代码,我尝试仅过滤某些字段中的空白单元格并删除这些行

ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=7, Criteria1:= _
        "="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=8, Criteria1:= _
        "="
ActiveSheet.Range("$A$1:$I$" & lines).AutoFilter Field:=9, Criteria1:= _
        "="
ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.rows.Count - 1).rows.Delete
ActiveSheet.ShowAllData

仅当我在此列中有空白单元格时它才有效。 但是我遇到了一个问题,当我没有空白单元格时,通过使用上面的代码,我的所有范围都将从工作​​表中删除。如何避免这个问题?我应该更改过滤条件还是其他什么?

最佳答案

使用 SpecialCells 仅删除自动筛选后可见的行:

ActiveSheet.Range("$A$1:$I$" & lines).SpecialCells _
    (xlCellTypeVisible).EntireRow.Delete

如果您不想删除范围内的标题行,请向范围添加偏移量以将其排除:

ActiveSheet.Range("$A$1:$I$" & lines).Offset(1, 0).SpecialCells _
    (xlCellTypeVisible).EntireRow.Delete

关于VBA:如何删除Excel中过滤的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194394/

相关文章:

excel - 写入文本文件时出现错误文件模式错误

c# - 创建数据列而不是行

Excel - 查找单元格的点位置

function - VBA:Excel 范围总是显示为空?

跨多个工作表的 VBA 宏

java - 根据特定单元格值划分 Excel 工作表

VBA:增加我的代码的行号

java - 动态数据到 excel servlet

excel - 当最后一行隐藏时查找 Excel 电子表格的最后一行

excel - 更新Excel VBA字典中的值