Excel 宏 - 根据多个 or 语句删除行

问题描述 投票:0回答:1

我正在尝试编写一个根据特定条件删除行的宏。我目前拥有的宏可以工作,但它不允许有 30 个值。我在第 25 行之后收到“Too Many Line Continuations”错误。 我想删除所有不包含列出的 30 个字段的行,并保留标题行。

Sub DeleteRow()
Dim row_count As Long
Dim i As Long
Dim ws As Worksheet
Dim my_string As String

Set ws = ThisWorkbook.Sheets("Test")

ws.Activate
row_count = ws.Cells(Rows.Count, "A").End(xlUp).Row

i = 2

Do While i <= row_count

    my_string = ws.Cells(i, 5).Text
    
    If InStr(my_string, "A") = 0 _
    And InStr(my_string, "B") = 0 _
    And InStr(my_string, "C") = 0 _
    And InStr(my_string, "D") = 0 _
    And InStr(my_string, "E") = 0 _
    And InStr(my_string, "F") = 0 _
    And InStr(my_string, "G") = 0 Then
    
        Rows(i).EntireRow.Delete
        i = i - 1
        row_count = row_count - 1
    
    End If

i = i + 1

    
Loop
End Sub
excel vba
1个回答
0
投票

添加到 BigBens 评论:

Dim CharArray(29) As String
CharArray(0) = "A"
CharArray(1) = "B"
CharArray(2) = "C"

等等

然后对于 If 语句:

Do While i <= row_count

    my_string = ws.Cells(i, 5).Text
    
    For j = 0 To 29
        If InStr(my_string, CharArray(j)) = 1 Then
            GoTo Skip
        End If
        Rows(i).EntireRow.Delete
        i = i - 1
        row_count = row_count - 1
    Next
Skip:
i = i + 1

    
Loop
End Sub

这会循环遍历所有条件,如果 1 不是 0,则会跳过。

© www.soinside.com 2019 - 2024. All rights reserved.