VBA如果不是或不是

时间:2018-03-19 09:33:57

标签: excel vba excel-vba

我有2 If Not的{​​{1}}语句,但代码仍然像常规or语句一样运行。 Moncol是一个等于13的整数变量,if语句应该转到End If,而不是。当If不等于12或13或14时,此代码应删除列。

Moncol

3 个答案:

答案 0 :(得分:6)

尝试使用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等等。

答案 1 :(得分:4)

您当前的If语句将始终为True。

你可以这样做:

With NewPayWS
    If Not (MonCol = 12 Or MonCol = 13 Or 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

答案 2 :(得分:2)

有多种方法可以处理它。还有一个

If moncol >= 12 and moncol <=14 then
     'Do nothing
else
     'delete code
end if