按位邏輯運算子
VBA 中的所有邏輯運算子都可以被認為是同名的按位運算子的覆蓋。從技術上講,它們總是被視為按位運算子。VBA 中的所有比較運算子都返回一個布林值 ,它將始終沒有設定其位(False
)或其所有位(True
)。但它會將任何位設定為 True
處理一個值。這意味著將表示式的按位結果轉換為 Boolean
(參見比較運算子)的結果將始終與將其視為邏輯表示式相同。
使用這些運算子之一分配表示式的結果將給出按位結果。請注意,在下面的真值表中,0
相當於 False
而 1
相當於 True
。
And
如果雙方的表示式都計算為 True
,則返回 True
。
左手運算元 | 右手運算元 | 結果 |
---|---|---|
0 |
0 | 0 |
0 |
1 | 0 |
1 |
0 | 0 |
1 |
1 | 1 |
Or
如果表示式的任一側求值為 True
,則返回 True
。
左手運算元 | 右手運算元 | 結果 |
---|---|---|
0 |
0 | 0 |
0 |
1 | 1 |
1 |
0 | 1 |
1 |
1 | 1 |
Not
如果表示式求值為 False
則返回 True
,如果表示式求值為 True
則返回 False
。
右手運算元 | 結果 |
---|---|
0 |
1 |
1 |
0 |
Not
是唯一沒有左手運算元的運算元。Visual Basic 編輯器將使用左手引數自動簡化表示式。如果你輸入……
Debug.Print x Not y
…… VBE 會將行改為:
Debug.Print Not x
類似的簡化將對包含 Not
的左手運算元(包括表示式)的任何表示式進行。
Xor
也稱為異或。如果兩個表示式都評估不同的結果,則返回 True
。
左手運算元 | 右手運算元 | 結果 |
---|---|---|
0 |
0 | 0 |
0 |
1 | 1 |
1 |
0 | 1 |
1 |
1 | 0 |
請注意,雖然 Xor
運算子可以使用類似的邏輯運算,也絕對沒有理由這樣做,因為它給出了相同的結果比較操作 <>
。
Eqv
也稱為等價。當兩個表示式求值相同時,返回 True
。
左手運算元 | 右手運算元 | 結果 |
---|---|---|
0 |
0 | 1 |
0 |
1 | 0 |
1 |
0 | 0 |
1 |
1 | 1 |
需要注意的是 Eqv
功能非常很少使用,因為 x Eqv y
等同於更可讀 Not (x Xor y)
。
Imp
也被稱為暗示。如果兩個運算元相同或第二個運算元是 True
,則返回 True
。
左手運算元 | 右手運算元 | 結果 |
---|---|---|
0 |
0 | 1 |
0 |
1 | 1 |
1 |
0 | 0 |
1 |
1 | 1 |
請注意,Imp
功能很少使用。一個好的經驗法則是,如果你無法解釋它的含義,你應該使用另一種結構。