我目前有一个VBA代码按顺序运行,以消除我的Excel数据表中的文本。我遇到问题的地方是我在Pear的行,在数据集中,Pear有时会出现在Pear和Pineapples的一个单元格中。因此,当我运行此代码时,它将删除梨出现的任何地方。我希望代码只在单独使用时消除它。
对于苹果和香蕉,如果与另一种水果一起出现,如果被删除则没关系,只有梨需要这个限制。
Sub DeleteMultipleRows()
Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Apple")
Call DeleteRows(ActiveSheet.Range("A1:A65536"), "Banana")
Call DeleteRows(ActiveSheet.Range("I1:I65536"), "Pear")
End Sub
Sub DeleteRows(ByVal rng As Range, ByVal term As String)
Dim c As Range
Do
Set c = rng.Find(term, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing
End Sub
答案 0 :(得分:2)
您可以向DeleteRows
子项添加可选参数,以便更好地控制其行为:
Sub DeleteMultipleRows()
DeleteRows ActiveSheet.Range("A1:A65536"), "Apple"
DeleteRows ActiveSheet.Range("A1:A65536"), "Banana"
DeleteRows ActiveSheet.Range("I1:I65536"), "Pear", False
End Sub
Sub DeleteRows(ByVal rng As Range, ByVal term As String, _
Optional LookAtPart As Boolean = True)
Dim c As Range
Do
Set c = rng.Find(term, LookIn:=xlValues, _
lookat:=IIf(LookAtPart, xlPart, xlWhole))
If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing
End Sub