Excel VBA中Select Case比较语句异常问题求助
VBA Select Case 语句错误分析与修正
核心错误原因
你误解了VBA中Select Case的语法逻辑:
- 当前写法里,
Case myValue >= 1会先计算这个表达式的布尔结果(True/False),再将该布尔值与Select Case后的myValue(数值类型)做匹配。由于布尔值和数值类型不匹配,所以Double类型时无匹配分支。 - 当
myValue声明为Long类型时,赋值0.5会被自动取整为0;而VBA中布尔值False等价于0,此时myValue >=1的结果是False(0),和Long类型的myValue(0)匹配,因此错误执行第一个分支。
修正后的代码
正确的Select Case写法是在Case后直接指定比较条件,无需重复变量名:
Public Sub test() Dim myValue As Double myValue = 0.5 Select Case myValue Case >= 1 Debug.Print "more than 1" Case < 1 Debug.Print "less than 1" End Select End Sub
也可以使用Is关键字明确比较逻辑:
Public Sub test() Dim myValue As Double myValue = 0.5 Select Case myValue Case Is >= 1 Debug.Print "more than 1" Case Is < 1 Debug.Print "less than 1" End Select End Sub
内容的提问来源于stack exchange,提问作者tomi09pl
相关产品推荐
相关产品推荐

