2017-11-10 9 views
-1

私はこれがうまくいかないと思う何らかの理由を与える何かを見つけることができません。何があっても、これは常に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 

私が知っているのであれば醜い声明のthats、私はcase文と負論理を使用しようとしましたが、それはどちらか動作しませんでした。

+2

あなたの 'Or'sはすべて' And'であるべきだと思います。すべての文字列は、少なくともすべての文字列と同じではありません。 – mypetlion

+3

論理を読み上げます。 "もし何か** **" T "**または**同じこと** **" Y "...ではない - それは偽になることができますか? – Blorgbeard

+1

'strDrawingSize <>" T "またはstrDrawingSize <>" Y "...'それは常にそれらのものの少なくとも1つと等しくないでしょう。 AND論理が必要です。 –

答えて

2

、あなたはstrDrawingSizeは、希望の文字のいずれかでないかどうかを確認したい:

きれいな方法はSelect Caseを使用することです。その場合は、それが-1の場合は、比較したい文字の上にIndexOfメソッドを使用します。

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

フィドル:Live Demo

これは、それがどのように動作するかです:基本的に文字列のコレクションですChar値の場合、IndexOfメソッドはコレクション内の指定された値のインデックスを返し、値が見つからない場合は-1を返します。

1

他にも述べたように、ANDの代わりにORを使用しているため、コードは常に実行されます。私はそれを理解したよう

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

関連する問題