0

次のコードがあります。

Dim UserID As String = "James"
Dim AccNo As String = "S10001"
Dim err As Boolean = False

If Left(AccNo , 1) = "S" Then
    If UserID <> "Alex" Or UserID <> "James" Then
         err = True
    End If
End If

結果が常に err=True になるのはなぜですか? 私のコードの何が問題なのですか?

4

6 に答える 6

2

自明なことに、aは常に 2 つの明確に異なる値の少なくとも 1 つと等しいとは限らないため、どちらか一方の比較が常に true になるAndため、OrUserID

If Left(AccNo , 1) = "S" Then
    If UserID <> "Alex" And UserID <> "James" Then
         err = True
    End If
End If
于 2013-09-17T06:25:49.953 に答える
0

これは、常に true でなければならない 2 つの 'not' または 'other than' ステートメントを実行しているためです。テストする値が何であれ、もう一方の値は常に true であるためです。

于 2013-09-17T06:26:42.853 に答える
0

UserID は「James」と同じですが、「Alex」とも等しくないため、条件が満たされ、変数が true に変更されます。

于 2013-09-17T06:27:21.053 に答える
0

それが正しい結果です。

条件1:Left(AccNo , 1) = "S"真なのでifブロックに入る

2 番目の条件: (UserID <> "Alex" Or UserID <> "James")-> 2 つの結果のいずれかが true の場合、コードは If ブロックを実行します。条件を入力したくない場合は、 を に変更しORANDください。つまり、ユーザーがJamesであってはならず、Alexであってはなりません。

于 2013-09-17T06:30:20.567 に答える
0

「ユーザーIDはAlexでもJamesでもありません」のようなものを表現したいと思います。これは論理的にはnot (UserID is Alex or UserId is James). not (x or y)は と同じで、これは にnot x and not y等しいUserID is not Alex and UserId is not James、または VB 構文では次のようになります。

UserID <> "Alex" And UserID <> "James"
于 2013-09-17T06:30:23.810 に答える