2017-11-10 124 views
-1

我找不到任何讓我有任何理由認爲這不起作用的東西。無論如何,這總是評估if語句中的代碼。if <> ...我缺少什麼

我試着把一切都放在()中我試着用()分隔每個語句。不管它總是在if語句中運行代碼。我錯過了什麼?

' Update by Adam W. Schneider 11/10/2017 
If strDrawingSize <> "T" Or strDrawingSize <> "Y" Or strDrawingSize <> "Z" Or strDrawingSize <> "M" Or strDrawingSize <> "P" Or strDrawingSize <> "S" Or strDrawingSize <> "N" Or strDrawingSize <> "W" Or strDrawingSize <> "X" Or strDrawingSize <> "R" Or strDrawingSize <> "O" Then 

    ' Update by Adam Schneider 08/24/2017 
    cboRefDrawingSize.Text = cboDrawingSize.Text 

End If 

我知道這是一個醜陋的if語句,我試圖用一個case語句使用負邏輯,但這也不起作用。

+2

我認爲你所有的'或'應該是'和'。每個字符串都不等於除了其中的一個外。 – mypetlion

+3

大聲讀出邏輯。 「如果**不是**」T「**或**,那麼相同的事物**不是**」Y「......」 - 是否可以是虛假的? – Blorgbeard

+1

'如果strDrawingSize <>「T」或strDrawingSize <>「Y」...'這總是不會等於這些東西中的至少一個。你需要AND邏輯。 –

回答

2

據我瞭解,你要檢查,如果strDrawingSize不是期望字母的任意一個。如果是這樣的話,然後使用所需的信件IndexOf方法進行比較,如果是-1:

If "TYZMPSNWXRO".IndexOf(strDrawingSize) = -1 Then 
    cboRefDrawingSize.Text = cboDrawingSize.Text 
End If 

小提琴:Live Demo

這是如何工作的:本質上是字符串的集合Char值,IndexOf方法返回集合中給定值的索引,如果未找到該值,則返回-1。

1

正如其他人所說,您的代碼將始終執行,因爲您使用的是OR而不是AND。

的清潔方法是使用一個Select Case

Select Case strDrawingSize 
    Case "T", "Y", "Z", "M", "P", "S", "N", "W", "X", "R", "O" 
    Case Else 
      ' Update by Adam Schneider 08/24/2017 
      cboRefDrawingSize.Text = cboDrawingSize.Text 
End Select 
+0

這是一個很好的解決方案,因爲它可以工作,但看看我更清潔的解決方案的例子。 – David