如何在VBA的Select Case中实现≥0且<7的范围判断?
解决VBA Select Case中半开区间(>=0且<7)的判断问题
你之前用Case Is >=0, Is <7的问题在于,VBA里Case子句中的逗号代表逻辑或(OR),而不是逻辑与(AND)——这就意味着只要满足a>=0或者a<7其中一个条件就会触发这个Case,相当于所有实数都会匹配,完全不符合你要的“同时满足两个条件”的需求。
要实现a >=0 且 a <7的半开区间判断,有两种靠谱的写法:
方法1:用And连接两个条件(最精确推荐)
直接在Case子句里用And把两个条件绑定,明确表示“同时满足”:
Dim a As Double a = 6.99999999 ' 测试值1 Select Case a Case Is >= 0 And Is < 7 Debug.Print "ok" ' 输出ok Case Else Debug.Print "no" End Select a = 7 ' 测试值2 Select Case a Case Is >= 0 And Is < 7 Debug.Print "ok" Case Else Debug.Print "no" ' 输出no End Select
这种写法完全符合你的需求,不管a是接近7的小数还是刚好等于7,都能准确判断。
方法2:指定接近7的上限值(仅适用于固定精度场景)
如果你能确定a的小数位数不会超过某个范围,也可以用Case 0 To 6.99999999(根据你的测试值来定上限),但这种方法有局限性——如果a是6.999999999(比你设定的上限多一位小数),就会被误判为"no",所以不如方法1灵活可靠。
额外提醒
VBA的Case x To y是闭区间(包含x和y),所以永远不要用Case 0 To 7来实现半开区间,这会把a=7也包含进去,和你的需求不符。
内容的提问来源于stack exchange,提问作者johnn
相关产品推荐
相关产品推荐

