我有带有 2 个 If Not
的 or
语句,但是代码运行起来仍然像常规的 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
,当有 If
和 Else
的多个场景时,使用和阅读更容易。
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/