更新日:、 作成日:

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

はじめに

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

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

1 なら True を返します。

0 なら False を返します。

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

CBool 関数の引数と戻り値

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

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

解説

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

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

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

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

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

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

使用例

CBool 関数の使用例を紹介します。

Boolean 型に変換する

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)