我有下面的代码,因为我想删除所有包含“Something”值的行,但是当我启动它时,它不会删除每一行只有一些,我点击了5次删除每一行,如何实现将通过一次单击删除包含“Something”的所有行的宏?提前致谢
Dim cell As Range
Worksheets("Something").Activate
For Each cell In Cells.SpecialCells(xlTextValues)
If cell = "Something" Then
cell.EntireRow.Delete
End If
Next cell
答案 0 :(得分:1)
如果所有值都在A列中,比如说:
Worksheets("Something").Activate
With ActiveSheet
Dim LastRow as Long
LastRow = .Cells(.Rows.Count,1).end(xlUp).Row
Dim i As Long
For i = LastRow to 1 Step -1
If .Cells(i,1).Value = "Something" Then
.Rows(i).Delete
End If
Next
End With
答案 1 :(得分:0)
xlTextValues
用于Range.SpecialCells method的可选值参数,而不是您拥有它的主要类型。
您需要在xlCellTypeConstants
和xlCellTypeFormulas
之间选择xlTextValues
作为选项。如果你需要两者,你将不得不运行两次。
Dim cell As Range
with Worksheets("Something")
.activate
For Each cell In Cells.SpecialCells(xlCellTypeFormulas, xlTextValues)
If cell = "Something" Then
cell.EntireRow.Delete
End If
Next cell
For Each cell In Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
If cell = "Something" Then
cell.EntireRow.Delete
End If
Next cell
end with
xlCellTypeConstants
和xlTextValues
都共享数值2(尽管用于不同目的)。出于所有意图和目的,您正在查看xlCellTypeConstants
以查找任何类型的值,包括错误。
VBA的默认比较运算符为vbBinaryCompare
,区分大小写。使用类似If Lcase(cell) = "something" Then
的内容进行非区分大小写的比较。