VBA如果条件为真,但实际上是假的,它有什么问题?

use*_*568 2 vba if-statement

我在VBA中编写代码,根据一些输入参数将Access数据库中的数据提取到Excel.当谈到If语句时,检查"Speed"变量范围的标准之一是真的,但是,我检查了这个标准应该是错误的.例如,速度= 49,VSP = 1.5,1 <=速度<25,如果条件指示为真,这是荒谬的,而VSP <0表示为假,因此它进入第一个elseif条件,1 <=速度<25仍然表示true和0 <= VSP <3也为true,然后函数返回Access数据库中的值.否则,如果速度= 49,VSP = 6.5,则该功能仍然执行"ElseIf(1 <=速度<25)和(0 <= VSP <3)然后,声明2"部分.它似乎只是始终将第一个elseif条件视为真.

我的if语句出了什么问题?有什么建议?

码:

Function F (ByVal Speed, VSP as single)

.............

If (1 <= Speed < 25) And (VSP < 0) Then

   statement 1

ElseIf (1 <= Speed < 25) And (0 <= VSP < 3) Then

   statement 2

ElseIf (25<= Speed < 50)) And (0<= VSP <3) Then

   statement 3

End if

End function
Run Code Online (Sandbox Code Playgroud)

pho*_*oog 9

还没有人指出如何1 <= Speed < 25评估.首先,1 <= Speed评估为TrueFalse,然后将该值与之进行比较25.这需要解释TrueFalse作为整数. True被解释为-1; False被解释为0.这两个都小于25,所以表达式将始终评估为True.