如果条件为假则语句仍然执行

时间:2016-06-27 19:48:44

标签: excel vba

我遇到了一个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语句并且不显示任何消息框。

enter image description here

1 个答案:

答案 0 :(得分:2)

执行j = k if块时。调试输出证明了这一点。在您的断点j 不再 等于k

这是因为已执行的if块已修改j

For j = 0 To UBound(colConn) 

if阻止之后,代码跳转到设置了断点的End If。只有这样你才能看到j = k这个表达式,但请注意,由于j在平均时间内发生了变化,所以这不是执行if语句时的结果。