Почему следующая переменная целочисленного типа выводит -1? - PullRequest
0 голосов
/ 05 мая 2020
Sub Test()
    Dim iX As Integer

    iX = 1 = 1

    'Out put is -1
    MsgBox iX 
End Sub

1 Ответ

4 голосов
/ 05 мая 2020

Потому что, если вы сравните 1 с 1, это True, поэтому 1 = 1 равно True, а True считается -1 в VBA по определению, и вы записываете этот результат в свою переменную iX.

Этот iX = 1 = 1 оценивается так же, как iX = (1 = 1), и это iX = True, а поскольку iX равно Integer, True преобразуется в числовое c значение -1.

По определению в VBA:

  • True равно -1
  • False равно 0

Но в формулах Excel

  • True равно 1
  • False равно 0
...