如何检查IF语句中的值列表?

hor*_*_vr 9 excel vba if-statement

我想写一个像这样的IF语句:

if var [is any of 1,4,5,6,12] then do stuff
Run Code Online (Sandbox Code Playgroud)

但我不知道VBA中的语法,除了:

if var=1 or var=4 or var=5...
Run Code Online (Sandbox Code Playgroud)

这看起来有点笨拙.有不同的方式吗?

psy*_*ola 14

您可以使用Select Case语句:

select case var
case 1,4,5,6,12
  'do something
case else
  'alternative
end select
Run Code Online (Sandbox Code Playgroud)


Wil*_*ell 5

我参加“派对”有点晚了,但是怎么样:

If InStr(1, ",1,5,8", "," & lVal1, vbTextCompare) > 0 Then
Run Code Online (Sandbox Code Playgroud)

检查“lVal1”是否等于 1、5 或 8。

If InStr(1, ",6,8,10,12", "," & lVal2, vbTextCompare) = 0 Then
Run Code Online (Sandbox Code Playgroud)

检查 'lVal2' 不等于 6、8、10、12。

逗号分隔符很重要,因为如果没有它们,在第一个示例中,如果 'lVal' 能够采用这些值中的一个,'15' 或 '58' 或 '158' 将全部匹配。

如果要检查的值可能存在任何歧义,则需要注意所使用的分隔符。

同样,使用您对将遇到的值范围的了解,可以删除第一个字符串中前导分隔符的笨拙以及将分隔符连接到搜索值的前面。

  • //// 这是我经常使用的一个很好的解决方案,但要小心这两项:1)有效数字列表的两端应该用逗号分隔...例如“,1” ,4,5,8," 2) 'lVal' 也需要用逗号包围...例如 "," & lVal & ","。这是为了防止当有效数字列表为“,180,187”时发现“lVal”为“,18”, (2认同)