2016-12-19 5 views
0
if (IsPEnabled = "TRUE" AND IsPChecked = 1) Then 
    canRemove = "true" 
elseif (IsPEnabled = "FALSE" AND IsPChecked = 0) Then 
    canRemove = "true" 
else 
    canRemove = "false" 
End If 

上記のコードではエラーが見つからないようですが、条件が満たされていてもifとelseの両方が満たされても常にcanRemoveはfalseのままです。注:すべての変数は宣言され、正しい値を持ちます。値がvbscriptで変数に代入されない

+1

:あなたの代わりにBoolean型としてこれらを持っていた場合、あなたはすべての文字列比較を必要としません.Print( "1") '(と" 2 "と" 3 ")を' if'内の各オプション内に置きます。 – FDavidov

+0

@FDavidov私が今まで行ってきたことは、値が "True"に設定されていて、 "TRUE"をチェックしていた – user1890098

+0

まあ、あなたはちょうど非常に混雑しているクラブに参加しました(私ももちろんメンバーです) !!!私はあなたがプリントでそれを見つけたと思いますよね? – FDavidov

答えて

0

私は

これはただ、もう少し、この上で展開する

if (IsPEnabled = "true" AND IsPChecked = 1) Then 
    canRemove = "true" 
elseif (IsPEnabled = "false" AND IsPChecked = 0) Then 
    canRemove = "true" 
else 
    canRemove = "false" 
End If 
1

を働いいずれかにそれらを強制的に文字列をチェックするとき、それは良い習慣だ小文字の対アッパーケースを見て、コンソールでこれを試してみました大文字と小文字の区別がつかないようにしてください。

明らかに、文字列が特定の大文字と小文字を区別する形式と一致することを確認する必要がある場合は、これは適切な方法ではありません。

あなたは使用することができます

If (UCase(IsPEnabled) = "TRUE" AND IsPChecked = 1) Then 
    canRemove = "true" 
ElseIf (UCase(IsPEnabled) = "FALSE" AND IsPChecked = 0) Then 
    canRemove = "true" 
Else 
    canRemove = "false" 
End If 

この方法は、あなたが純粋に比較するためのIsPEnabled変数の変更を強制し、実際にその値を変更しないでください。あなたが代わりに下ケースを使用する必要があり、あなたは以下のコードを使用します。一般的には

If (LCase(IsPEnabled) = "true" AND IsPChecked = 1) Then 
    canRemove = "true" 
ElseIf (LCase(IsPEnabled) = "false" AND IsPChecked = 0) Then 
    canRemove = "true" 
Else 
    canRemove = "false" 
End If 

を、また、TrueFalse値のためstringsを使用しない、より良い形です。最初の `if`、および`デバッグの前に `IsPEnabled`、` IsPChecked`のための `Debug.Print`を追加

If (IsPEnabled AND IsPChecked = 1) Then 
    canRemove = True 
ElseIf (Not IsPEnabled AND IsPChecked = 0) Then 
    canRemove = True 
Else 
    canRemove = False 
End If