VBA CBool 関数:Boolean 型に変換する

はじめに

Excel VBA マクロの CBool 関数から Boolean 型に変換する方法を紹介します。

CBool 関数は、数値や文字列などをブール型 (Boolean) に変換します。

1 なら True を返します。

0 なら False を返します。

数値や文字列を Boolean 型に変換したいときに使用します。

  • 目次
    • CBool 関数
    • 解説
    • 使用例

CBool 関数

CBool()
をブール型 (Boolean) に変換します。

引数「値」数値や文字列を指定します。
戻り値の型ブール型 (Boolean)

解説

文字列や数値を Boolean 型に代入すると、CBool 関数を使用したときと同じ結果になります。

引数「値」が数値なら 0False に変換し、それ以外をすべて True に変換します。

引数「値」が文字列のとき、数値に変換できる値なら上記と同じように変換します。 "true""false" ならそのまま TrueFalse に変換します。それ以外はすべて「エラー 13 型が一致しません。」が発生します。

引数「値」が日付なら数値に変換できるので True に変換します。ただし日付形式の文字列 "2000/01/01" なら「エラー 13 型が一致しません。」が発生します。

変換できない値を指定すると「エラー 13 型が一致しません。」が発生します。

数値ならすべて変換できるので、変換できるかどうかは「IsNumeric 関数」で判定できます。

使用例

Boolean 型に変換する。

Dim b As Boolean

b = CBool(0)
Debug.Print(b) ' False

b = CBool(1)
Debug.Print(b) ' True

b = CBool(-123)
Debug.Print(b) ' True

b = CBool("1")
Debug.Print(b) ' True

b = CBool("true")
Debug.Print(b) ' True

b = CBool("false")
Debug.Print(b) ' False

b = CBool(CDate("2000/1/1"))
Debug.Print(b) ' True

b = CBool(CDate("0:00:00"))
Debug.Print(b) ' False、数値の 0 に変換されるため

b = CBool("2000/1/1") ' エラー

b = CBool("tips")     ' エラー

変換できるか判定

IsNumeric 関数」を使用して、変換できるときだけ変換します。

Dim s As String
s = "123"

Dim b As Boolean
If IsNumeric(s) = True Then ' 変換できるときだけ Boolean にする
    b = CBool(s)
Else
    b = False ' Boolean の初期値
End If

Debug.Print(b)