我在工作表“tabelaClientes
”中有一个表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
但这只删除了Nome
为空的部分行,而不是全部,为什么?
答案 0 :(得分:5)
您可以使用对SpecialCells()的非常简单的调用来代替使用循环。
Range("tabelaClientes[Nome]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
编辑:扩大我的答案,因为我很匆忙。在按下F5并选择"特殊单元格...空白"后,SpecialCells模仿您在Excel中找到的菜单。这样做的好处是可以同时选择所有空白然后删除行。如果你的桌子变大,迭代可能会很慢,这样可以节省很多时间。
您似乎无法删除表中的多个非连续行。您可以执行以下两种操作之一:
1-将表转换回范围并将引用更改为标准Excel引用
2-循环遍历SpecialCells()的结果。
选项#2会因为循环而产生较慢的代码,但它仍然比循环遍历所有单元格更好并检查它们是否为空白但我可以理解您可能需要将其保留为表格。