• ベストアンサー

Trueの値は、なぜ1ではなくて-1なの?

VBAの勉強をしているのですが True (-1) False (0) に違和感を感じます。 0と1ならスッキリするのですが、-1なのがモヤモヤします。 私だけでしょうか?変な事聞いてすいません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

VBAでTrue(-1)、False(0)と定義されているのは、補数の関係(Not True(0)、Not False(-1))に従っている、これが一番解りやすい。一方、シート関数でのTrue(1)、False(0)は計算可能性が優先されている。これまたウィ~! いずれにしても、True、Falseは関数だったんだ、ネ~ェ!! falseとtrue 0,1,-1 の意味が知りたいです http://okwave.jp/qa/q2328665.html ビット演算でNOTを16ビットの変数に取った場合、 0000000000000000→1111111111111111 で1111111111111111 になりますが、これは、16ビット符号付きの数字で言うと-1になります。逆に-1のNOTをとったら0になるので、 TRUEとFALSEの数値化と比較演算子 「神奈川マスターズクラブ会報2003年5~6月号」より http://www.kentei.ne.jp/quali/column/knowhow/030815/030815.html Excelでは、「TRUE」と「FALSE」は独特の機能があります。関数として使用するときは、引数のない関数となります。ヘルプでは「この関数を入力する代わりに、ワークシートや数式の中に直接 TRUE と入力することもできます。TRUE 関数は、他の表計算アプリケーションとの互換性を維持するために用意されている関数です。」となっています。「DATEDIF関数」とは違い、「関数の貼り付け一覧」の中にも表示されています。

nhooumj
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

sub macro1() debug.print not(true) debug.print not(false) debug.print not(-1) debug.print not(0) debug.print not(1) end sub のようにして試してみると、-1と0の組み合わせがTRUEとFALSEに対応している様子が確認できます。 VBAの中では、0(=FALSE)のビット反転が-1(逆も同じ)だからです。

nhooumj
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう