6

我希望仅使用一个案例执行 Select Case - 其中案例不等于“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 or For or Sub or Function or Property

不断弹出。

4

2 回答 2

16

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

Select Case Range("my_range").Offset(0, column_offset).Value
    Case "P", "Ev", "Af"
        'ignore this
    Case Else
        'my code
 End Select
于 2014-04-10T11:57:43.673 回答
1

我知道很久以前就有人问过这个问题,但今天我偶然发现了完全相同的奇迹:-您可以使用带Not运算符的 Select Case 语句吗?

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

Select Case [variable]
    Case is <> [condition 1]
        'my code
End Select
于 2020-07-22T11:41:06.467 回答