Excel VBA删除表中的空行

Nun*_*ira -1 excel vba excel-vba

tabelaClientes在Sheet" Clientes"中有一个表,我想删除字段" Nome"为空的行.

我怎么做?

这就是我正在尝试的:

Sub Cliente()
Dim ws As Worksheet
Dim row As Range

Set ws = Sheets("Clientes")

For Each row In ws.[tabelaClientes[Nome]].Rows
     If row.Value = "" Then
        row.Delete
    End If
Next

Exit Sub
Run Code Online (Sandbox Code Playgroud)

但这只删除了一些Nome空的行,而不是全部,为什么?

App*_*Pie 5

您可以使用对SpecialCells()的非常简单的调用来执行此操作,而不是使用循环.

Range("tabelaClientes[Nome]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Run Code Online (Sandbox Code Playgroud)

编辑:扩大我的答案,因为我很匆忙.在按下F5并选择"特殊单元格...空白"后,SpecialCells会模仿您在Excel中找到的菜单.这样做的好处是可以同时选择所有空白然后删除行.如果你的表越来越大,迭代可能会非常慢,这样可以节省大量的时间.

它似乎是你不能在一个删除多个不连续的行.您可以执行以下任一操作之一:

1-将表转换回范围并将引用更改为标准Excel引用

2-循环遍历SpecialCells()的结果.

由于循环,选项#2将产生较慢的代码,但它仍然优于循环遍历所有单元格并检查它们是否为空白但我可以理解您可能需要将其保留为表格.