3 votes

Que fait un deuxième égal = dans une affectation de variable vba ?

Perplexe quant à la fonction d'utilisation d'un deuxième signe = en vba. Par exemple, s = Int(xVal) + (xVal = n + 1)

J'ai déchiffré du code et je suis tombé sur la ligne suivante qui me laisse quelque peu perplexe et malgré quelques recherches et débogages approfondis, je semble avoir du mal à trouver la réponse :

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

y

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

Ma question est la suivante : quelle est la fonction des comparaisons entre les parenthèses après le premier signe d'affectation = ?

TIA

4voto

Tim Williams Points 31438
(s = n)

Si s et n ont tous les deux la même valeur, cela donne True qui peut être ramené à sa valeur sous-jacente de -1 par d'autres opérations arithmétiques.

Eg :

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

Alors ça :

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

c'est comme écrire :

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

ou :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X