値を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ではめったにやらない処理なので知る必要はほぼないと思いますが、
興味があれば以下の記事をサンプルに読んでみてください。
なお、もしビット演算をするにしても、
If GetAttr(フォルダパス) And vbDirectory Then
と、ただAndでつなぐだけで普通に実行できます。
Ifステートメントの中に書いたコードは、
暗黙の型変換によってTrue/Falseになってくれますからね。
そもそもTrue/Falseにするだけなら「=」で比較すればできるわけで、
CBool関数は完全無欠のいらない子です。
C(キャスト)関数シリーズがすべての型用意されているというだけの存在と思われ、
まったく使用する場面が思い浮かびません。
この関数の利用法をご存じの方、お便りお待ちしております。