0

我正在运行下面的代码,如果单元格值包含在列号中,我将删除行。15 未激活,第 10 列中的单元格值不是“e&d”、“vpg”等。它返回给我这个错误:'运行时错误 13 类型不匹配'。

现在,当我针对单个条件运行它时,它适用于例如单元格值 = 活动或单元格值 = E&D,但添加多个条件会返回错误。语法错了吗?我什至尝试过切换,而不是“或”,将条件放在括号中,用逗号分隔它们。出于显而易见的原因,由于语法问题,它无法正常工作。任何人都可以指出我的错误吗?

Sub test()
Dim n1, n2, x, z, lastrow As Variant



                  ' To delete entire row if criteria is not met
                    Worksheets("Sheet2").Activate
                    Range("A4").Select
                    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
                    For x = lastrow To 4 Step -1
                      If Cells(x, 15).Value <> "Active" And (Cells(x, 10).Value <> "E&D" Or "ESG" Or "DLM SER" Or "VPD" Or "PLM PROD") Then
                      Rows(x).Delete
                      End If
                    Next x
End Sub

提前致谢!

4

1 回答 1

0

您的 if 语句语法错误,您需要像这样多次指定左侧

If Cells(x, 15).Value <> "Active" And (Cells(x, 10).Value <> "E&D" And Cells(x, 10).Value <> "ESG" And Cells(x, 10).Value <> "DLM SER" And Cells(x, 10).Value <> "VPD" And Cells(x, 10).Value <> "PLM PROD") Then

在这种情况下,您还需要使用 and 而不是 or 因为您要检查所有条件是否为真,即列出的值都不在单元格 x, 10 中

编辑

如果要删除不活动的行或第 10 列中的值不匹配,您可能需要使用以下内容

If Cells(x, 15).Value <> "Active" Or (Cells(x, 10).Value <> "E&D" And Cells(x, 10).Value <> "ESG" And Cells(x, 10).Value <> "DLM SER" And Cells(x, 10).Value <> "VPD" And Cells(x, 10).Value <> "PLM PROD") Then

注意两个主要条件之间的或

于 2013-07-02T09:49:47.057 回答