• ベストアンサー

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/7940)
回答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

  • falseとtrue 0,1,-1 の意味が知りたいです

    こんにちは。 大分前からなんとなくしっくり行かないことがあります。 excel でのワークシートの関数vlookupなどの引数に true/false がありますよね。 絶対値の絶対のイメージがtrue・・の気分なのですが結果は逆でした。 IF関数では 真→true  偽→false だったと思います。 私はIF関数でのtrue/false のイメージはしっくりいきます。 vlookupはどーしても納得いくイメージが持てません。 どなたか教えていただけませんか?どんな風にとらえればいいのか。 しかも確かACCESSやVBAの中では true→-1 false→0 vlookupでは true→1 false→0 じゃなかったでしたっけ? こちらの考えも?? こっちの方は以前知り合いに説明を受けて一度は納得したのですが、 今はよくわからなくなってしまいました。 教えてください。

  • エクセル 条件を最初に満たしたセルの行の値の取得VBA

    いつもお世話になっております。 ある表においてA2以降に 2 FALSE 3 FALSE 4 FALSE 5 FALSE 6 FALSE 7 FALSE 8 FALSE 9 TRUE 10 FALSE 11 TRUE 12FALSE 13FALSE ・ ・ となっています。 上から調べて最初に”TRUE”であるセル(この場合はA9)の 行数の値(9)を取得するようなVBAはどのように記述すればよいでしょうか? 関数であればROW関数とVLOOKUP関数の組み合わせでできるのですが・・

  • チェックボックスの値をTRUE/FALSE以外にするには?

    ユーザーフォームに入力した内容をワークシートに転記するマクロを組んでるのですが、チェックボックスの場合、値がTRUE/FALSEになります。 これを、TRUE=1、FALSE=空白にする方法はないでしょうか? ちなみに、マクロには下記のように書いて転記しています。 .Cells(I, 3).Value = Me.chkbox1.Value

  • プログラミングでよくtrue falseとでてきま

    プログラミングでよくtrue falseとでてきますがこれはなにがtrueなんでしょうか? ブール型っていうのをいいたいんですか?

    • ベストアンサー
    • PHP
  • PHPのTRUEとFALSEについて 値を返すというけれど、なぜ「1」かブランク(何もなし)なのでしょうか?

    以下の文を実行すると、$abcには「3」があるので、TRUEになるはずなのですが、 エコーすると「1」と記載されます。 <?php $abc = "283743"; $abc = ereg("3",$abc); echo $abc; ?> 以下の文を実行するとエコーしても何も表示されません。 「0」は該当しないので、FALSEと表示されると思うのですが・・。 <?php $abc = "283743"; $abc = ereg("0",$abc); echo $abc; ?> ネットで調べると、それぞれTRUEとFALSEを返すと記載がありました。 それなのになぜ「0」と「何もなし」になるのでしょうか。

    • ベストアンサー
    • PHP
  • Trueについて

    再度同じ質問になりますがお尋ねします。 Excelの関数でTrueは「1」でFalseは「0」だと思いますがAccessの場合は違うのでしょうか? Accessのフィルタで、データシートで性別フィールドにはチェックを入れると「男性」チェックを入れないと「女性」というようにしています。 データシートから「フィルタ/並べ替え」で男性だけを抽出しようとしました。「レコード」「フィルタ」「フィルタ/並べ替え」で「抽出条件」に「True」と入れると男性が抽出されますが「抽出条件」に「True」である「1」を入れても抽出できません。しかし「-1」だと「男性」が抽出できました。これはなぜでしょうか?「True」は「1」ではないのでしょうか?教えてください。

  • エクセルの関数でTRUE False 数値

    エクセルの関数でTRUE とかFalseがありますが、 これらを数値にすると、 Falseは0で、 TRUEは何になるのでしょうか?

  • ACCESS2007 TRUEが-1

    お世話になっております。 OS:Windows7 Pro ACCESS2000のDBをACCESS2007で開いて使用しております。 Excel2007のデータを、ACCESSのフォームの左側のバー(なんで言うんでしょう 汗)に貼り付けてインポートもどきをしております。 Excelの中に「TRUE」「FALSE」という文字列があるのですが、 これをACCESSに貼り付けると「-1」「0」となってしまいます。 以前から同じDBを使用しており、OS:WinXP、ACCESS2000だった時は、 貼り付けると「TRUE」「FALSE」という文字列になっていました。 「TRUE」「FALSE」という文字列にするには、何か方法ありませんでしょうか。 ちなみにExcelは外部から送られてくるデータの為、Excelファイル内で いろいろ編集するのは避けたいです。 出来たらACEESSの受け側で何かできると良いのですが。 宜しくお願い致します。

  • TRUE、FALSEと言う文字で、1、0を表したいのですが・・・

    Perlで、「空文字列(""), ゼロ(0), ゼロを示す文字列("0")の値は偽として、それ以外は真」との決まりはあるようですが、どうもコードを書いていてわかりにくいので、TRUE、FALSEと言う文字で、1、0を表したいのですが、何か良い方法はありますか??? $TRUE=1; $FALSE=0; 以外でお願いします。

    • ベストアンサー
    • Perl
  • サブクエリ 述語のTrue/False

    こんにちは。 サブクエリの勉強をしています。下のURLのサイトを見ていますがわからないことがあります。 http://www.techscore.com/tech/sql/SQL7/07_02.html/#sql76 EXISTS, ANY, ALL はサブクエリが返す値に対して、「TRUE」または「FALSE」の評価を行い、メインクエリの WHERE 句で使用されます。っとあります。 /* EXISTS */ SELECT * FROM 商品表 WHERE EXISTS (SELECT * FROM 商品表 WHERE 商品名 = 'BEER'); 上記のSQLが走り、サブクエリの商品表の中にある、商品名がBEERのモノを抽出しなさいというのは理解できます。理解できないのは、「TRUE」、「FALSE」です。これは1行でも結果が帰ってきたら、それはTRUEとみなされて、EXISITSはサブクエリをTRUEと評価するということでしょうか? つまり、どんな述語でもサブクエリで評価された結果が1行でもあれば、それはTRUEという意味になるのでしょうか?いまいち何がTRUEでFALSEなのかがわかりません・・・宜しくお願いします。

専門家に質問してみよう