我遇到了一个if语句,即使它的计算结果为false也是如此,我无法弄清楚是怎么回事。代码如下:
If (k = j) Then
Debug.Print "Code being stupid"
ReDim pinInfo(UBound(textConn))
For i = 0 To UBound(textConn)
For j = 0 To UBound(colConn)
If (StrComp(textConn(i), colConn(j), vbBinaryCompare) = 0 _
And StrComp(textPos(i), colPos(j), vbBinaryCompare) = 0) Then
pinInfo(i) = textConn(i) & "," & textPos(i) & "," & label(i) & "," & colScl(j)
'Debug.Print pinInfo(i)
Exit For
End If
Next j
Next i
Else
Debug.Print "k <> j"
MsgBox "The number of shapes representing the wire ID does not equal the number of shpaes representing the wire color."
Exit Sub
End If
j和k都是整数。在程序的这一点上,他们应该始终是平等的。我故意对输入进行检查,以便它们不是,但即使语句的计算结果为false,它仍然表现为返回true。下图是执行后我看到的截图。如您所见,它显示条件为false,但执行第一个print语句并且不显示任何消息框。
答案 0 :(得分:2)
执行j = k
if
块时。调试输出证明了这一点。在您的断点j
不再 等于k
。
这是因为已执行的if
块已修改j
:
For j = 0 To UBound(colConn)
在if
阻止之后,代码跳转到设置了断点的End If
。只有这样你才能看到j = k
这个表达式,但请注意,由于j
在平均时间内发生了变化,所以这不是执行if
语句时的结果。