2016-06-27 29 views
1

我遇到了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,但執行第一個打印語句並且不顯示消息框。

enter image description here

+1

單個'='標記是比較運算符嗎? –

+1

在VBA中是的。 '=='是錯誤的。 – cyboashu

+0

只需保存您的工作簿。重新打開並重試。你仍然得到這種行爲? – cyboashu

回答

2

j = k時的if塊被執行。調試輸出證明了這一點。在你的折點j不再等於k

這是因爲已經執行if塊已經修改j這裏:

For j = 0 To UBound(colConn) 

if塊中的代碼跳轉到你有斷點設定的End If後。只有在你看到表達式j = k時,但請注意,由於j同時發生了變化,因此在執行if語句時不是結果。

+0

我想借此機會爲讓我的挫折寫下原始問題而道歉。正如@Mat's Mug所說,如果我打印了j和k而不是「代碼很笨」,那將會更有幫助。如果我這樣做了,我會在前一段時間發現,即使在這段代碼中也沒有。對不起浪費你所有的時間。 – drylkuch