按位邏輯運算子

VBA 中的所有邏輯運算子都可以被認為是同名的按位運算子的覆蓋。從技術上講,它們總是被視為按位運算子。VBA 中的所有比較運算子都返回一個布林值 ,它將始終沒有設定其位(False)或其所有位(True)。但它會將任何位設定為 True 處理一個值。這意味著將表示式的按位結果轉換為 Boolean(參見比較運算子)的結果將始終與將其視為邏輯表示式相同。

使用這些運算子之一分配表示式的結果將給出按位結果。請注意,在下面的真值表中,0 相當於 False1 相當於 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 功能很少使用。一個好的經驗法則是,如果你無法解釋它的含義,你應該使用另一種結構。