我在朋友的帮助下得到了一个代码,但它没有检测到第一行。此代码将删除不以某些字母开头的行。
我必须多次运行以删除不必要的单元格,但A1(其中有一个要删除的项目)未被删除。
Sub colortargets()
Range("A1").End(xlDown).Offset(1, 0).Activate
Do Until ActiveCell.Row = 1
If Left(ActiveCell.Value, 2) <> "AB" And Left(ActiveCell.Value, 2) <> "AC" And Left(ActiveCell.Value, 2) <> "AD" Then
Rows(ActiveCell.Row).Delete
End If
ActiveCell.Offset(-1, 0).Activate
Loop
Range("A1").Select
End Sub
另外,有没有办法让这段代码不区分大小写?这真的是我第一次绕过VBA,所以我有点不知道该做什么。
答案 0 :(得分:1)
试试这个
这是因为Do Until ActiveCell.Row = 1
条件在到达第一行时退出循环,没有处理它
您可能希望避免使用Activate
/ ActiveXXX
模式并使用不同的循环方法:
Option Explicit
Sub colortargets()
Dim val As String
Dim iRow As Long
For iRow = Cells(Rows.count, 1).End(xlUp).row To 1 Step -1
val = Left(Cells(iRow, 1).Value, 2)
If val <> "AB" And val <> "AC" And val <> "AD" Then Rows(iRow).Delete
Next
End Sub
如果你必须使它不区分大小写:
Option Explicit
Sub colortargets()
Dim val As String
Dim iRow As Long
For iRow = Cells(Rows.count, 1).End(xlUp).row To 1 Step -1
val = UCase(Left(Cells(iRow, 1).Value, 2))
If val <> "AB" And val <> "AC" And val <> "AD" Then Rows(iRow).Delete
Next
End Sub