我有带有 2 个 If Notor 语句,但是代码运行起来仍然像常规的 If 语句。 Moncol 是一个等于 13 的整数变量,if 语句应该转到 End If,但事实并非如此。此代码应仅在 Moncol 不等于 12 或 13 或 14 时删除列。

With NewPayWS
    If Not MonCol = 12 Or Not MonCol = 13 Or Not MonCol = 14 Then
        .Range(.Cells(1, lastcol - 1), .Cells(1, MonCol + 1)).EntireColumn.Delete
        .Range(.Cells(1, DataType + 1), .Cells(1, MonCol - 4)).EntireColumn.Delete
    End If
End With

最佳答案

改用 Select Case ,当有 IfElse 的多个场景时,使用和阅读更容易。

Select Case MonCol
    Case 12, 13, 14
        ' do nothing

    Case Else
        .Range(.Cells(1, lastcol - 1), .Cells(1, MonCol + 1)).EntireColumn.Delete
        .Range(.Cells(1, DataType + 1), .Cells(1, MonCol - 4)).EntireColumn.Delete

End Select

编辑 1 :在@Rory 评论之后,您也可以使用 Case 12 To 14 ,这可能会派上用场,尤其是对于具有大量值的范围,然后您可以使用 Case 12 To 30 等。

关于VBA If Not 或声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49359677/

10-11 08:54