选择Case Not Or

时间:2014-04-10 11:55:50

标签: vba excel-vba select-case excel

我希望只用一个案例来执行一个案例 - 案例不等于“P”,“Ev”或“Af”。

这是我到目前为止所做的。

Select Case Range("my_range").Offset(0, column_offset).Value
    Case Not "P", "Ev", "Af"
        'my code
 End Select

该案例可以等于50个不同的值,我希望对所有这些值执行相同的操作(在'my code下),除非结果是P,Ev或Af。

我还尝试Not "P", Not "Ev", Not "Af"并将,替换为Or,但无济于事。

每次响应都是:

  

运行时错误'13':类型不匹配。

我知道我可以使用if语句替换它......

If Range("my_range").Offset(0, column_offset).Value <> "P" And Range("my_range").Offset(0, column_offset).Value <> "Ev" And Range("my_range").Offset(0, column_offset).Value <> "Af" Then
    'my code
End if

但如果可以,我更愿意使用Select Case选项。

有人想过吗?

非常感谢

修改

我还应该说我确实尝试过使用

Select Case Range("my_range").Offset(0, column_offset).Value
    Case "P", "Ev", "Af"
        Exit Select
    Case Else
        'my code
End Select

但错误信息:

  

编译错误:预期:Do或For或Sub或Function或Property

不断涌现。

2 个答案:

答案 0 :(得分:15)

您不能以这种方式使用Not。但你可以重构

Select Case Range("my_range").Offset(0, column_offset).Value
    Case "P", "Ev", "Af"
        'ignore this
    Case Else
        'my code
 End Select

答案 1 :(得分:1)

我知道很久以前就问过这个问题,但是今天我偶然发现了一个完全相同的奇迹:-您能否将Select Case Statment与Not运算符一起使用?

我也没有发现可以使用Not,但是可以使用此方法:

Select Case [variable]
    Case is <> [condition 1]
        'my code
End Select