如果声明仍然执行条件为False时

我碰到了一个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都是整数。 在这个程序中,他们应该永远是平等的。 我故意抛出input,使他们不是,但即使该语句评估为false,它仍然行为,如果它返回true。 下面的图片是执行后看到的截图。 如您所见,它显示条件为false,但执行第一个打印语句,并且不显示消息框。

在这里输入图像说明

j = kif块被执行。 debugging输出certificate了这一点。 在你的折点上, j 不再等于k

这是因为已经执行的if块在这里修改了j

 For j = 0 To UBound(colConn) 

if块之后,代码跳转到End If你有中断点设置。 只有当你看看expression式j = k ,但是请注意,由于j在同一时间发生了变化,这并不是if语句执行时的结果。