A1未被检测到并且区分大小写

时间:2017-03-05 01:20:07

标签: excel vba excel-vba

我在朋友的帮助下得到了一个代码,但它没有检测到第一行。此代码将删除不以某些字母开头的行。

我必须多次运行以删除不必要的单元格,但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,所以我有点不知道该做什么。

1 个答案:

答案 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