Что делает секунда = в присваивании переменной vba? - PullRequest
3 голосов
/ 20 июня 2019

Озадачен функцией использования второго знака = в vba. например. s = Int (xVal) + (xVal = n + 1)

Я расшифровал некоторый код и наткнулся на следующую строку, которая несколько озадачивает меня, и, несмотря на некоторые обширные исследования и отладку, я, похоже, изо всех сил пытаюсь найти ответ:

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

и * 1006

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

Мой вопрос: какова функция сравнения в скобках после первого присваивания = знак?

1011 * ТИА *

1 Ответ

4 голосов
/ 20 июня 2019
(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)
...