和風スパゲティのレシピ

日本語でコーディングするExcelVBA

値をTrue/False(Bool型)に変換する - CBool関数

値をBoolean型に変換する、CBool関数を解説します。

基本形

CBool(変換したい値)

実行例

CBool(0) ' = False
CBool(-1) ' = True
CBool(12345) ' = True
CBool("12345") ' = True
CBool("\1,000") ' = True
CBool("True") ' = True
CBool("False") ' = False
CBool("あいう") ' 「型が一致しません」エラー
CBool("") ' 「型が一致しません」エラー
CBool(#5/18/2025#) ' = True

解説

CBool関数は数値や文字列などをBoolean型(True/False)に変換します。

文字列は「TrueかFalseか」でしか判定はせず、
""も含めて他の文字列には「型が一致しません」エラーを返します。


数値は「0はFalse、それ以外はすべてTrue」という挙動になっており、
日付や数値文字列も含めて判定します。


このBooleanと数値の対応仕様はビット演算を行うためのもので、

  • 0100 OR 1010 = 1110 これは0でないのでTrue
  • 0100 AND 1010 = 0000 これは0なのでFalse

みたいな処理を行うためにこんな仕様になっています。

ExcelVBAではめったにやらない処理なので知る必要はほぼないと思いますが、
興味があれば以下の記事をサンプルに読んでみてください。

www.limecode.jp



なお、もしビット演算をするにしても、

If GetAttr(フォルダパス) And vbDirectory Then

と、ただAndでつなぐだけで普通に実行できます。

Ifステートメントの中に書いたコードは、
暗黙の型変換によってTrue/Falseになってくれます
からね。


そもそもTrue/Falseにするだけなら「=」で比較すればできるわけで、
CBool関数は完全無欠のいらない子です。


C(キャスト)関数シリーズがすべての型用意されているというだけの存在と思われ、
まったく使用する場面が思い浮かびません。

この関数の利用法をご存じの方、お便りお待ちしております。