vba变量赋值中的秒等于=是做什么的?

时间:2019-06-19 22:06:00

标签: excel vba boolean-expression

在vba中使用秒=符号的功能感到困惑。例如。 s = Int(xVal)+(xVal = n + 1)

我一直在解密一些代码,遇到了以下使我有些困惑的行,尽管进行了广泛的研究和调试,但我似乎仍在努力寻找答案:

s = Int(xVal) + (xVal = n + 1)

p(i, 3) = A(i)(s + 3 + (s = n)) + (s = n) * (p(i, 1) - p(i, 2))

我的问题是,第一次赋值=符号后,括号内的比较功能是什么?

TIA

1 个答案:

答案 0 :(得分:4)

(s = n)

如果s和n都具有相同的值,则其取值为True,可以通过其他算术运算将其强制为其基础值-1。

例如:

? True * 1   '>> -1
? False * 1   '>> 0

所以:

s = Int(xVal) + (xVal = n + 1)

就像写作:

If xVal = n + 1 Then
    s = Int(xVal) + -1
else
    s = Int(xVal) + 0
end if

或:

s = Int(xVal) + IIf(xVal = n + 1, -1, 0)