我有一个包含一些数据的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 - VBA:如何在Excel中删除筛选的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17194394/

10-10 12:42