如果声明仍然执行条件为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 = k
, if
块被执行。 debugging输出certificate了这一点。 在你的折点上, j
不再等于k
。
这是因为已经执行的if
块在这里修改了j
:
For j = 0 To UBound(colConn)
在if
块之后,代码跳转到End If
你有中断点设置。 只有当你看看expression式j = k
,但是请注意,由于j
在同一时间发生了变化,这并不是if
语句执行时的结果。