質問: ExcelのVBAで以下のコードを実行すると0と表示されます。 Trueが1に変換され、2と表示されることを想定していました。 なぜこのようなことが起きるのでしょうか。 ``` Sub test() MsgBox (True + 1) End Sub ```
回答: MsgBox (3 And 5) ← 1 0000000000000011 ← 3 And 0000000000000101 ← 5 ↓ 0000000000000001 ← 1 MsgBox (3 Or 5) ← 7 0000000000000011 ← 3 Or 0000000000000101 ← 5 ↓ 0000000000000111 ← 7 (Visual)Basic では、2進数の各ビット毎に論理演算を行います。 すべてのビットがTrue つまり 1111111111111111 は -1 になります。