第二个 equals = within vba 变量赋值有什么作用?

What does a second equals = within vba variable assignment do?

对使用第二个=登录的功能感到困惑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

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