在vba中使用second =符号的功能感到困惑。例如。 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

最佳答案

(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)

08-05 15:01