Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで数値や文字列を論理値に-CBool関数

VBAで数値や文字列を論理値に-CBool関数

動作検証バージョン:64bit Windows 10 Pro + 32bit Excelバージョン2104 ビルド13929.20296 Microsoft Store)

VBAでは、CLng関数で論理値を整数に変換できることをご紹介しています。

逆に数値等を論理値に変換するCBool関数の挙動も、

あわせて確認しましょう。

[スポンサードリンク]

論理値に変換するCBool関数を確認するサンプルマクロ

以下のようなSubプロシージャを作成して、CBool関数でどのようなデータがどう変換されるか確認してください。

Sub 論理値に変換する()
 Dim var As Variant
 var = -1

 Dim flg As Boolean
 flg = CBool(var)
 Stop
End Sub

ローカルウィンドウで確認しましょう

上記のSubプロシージャを実行するとStopステートメントで中断しますから、拙著『いちばんやさしいExcel VBAの教本』でも多用しているローカルウィンドウで、変数varに代入するデータを変更しながら、変数flgの値を確認してください。

上記のSubプロシージャをそのまま実行した場合、もちろん変数flgは下図のとおりTrueです。

varに代入する数値を他の数値に変更してみると、数値「0」のみがCBool関数でFalseに変換され、その他の数値は整数でも小数でもTrueに変換されます。

CBool関数の引数に文字列を指定した場合

CBool関数の引数についてヘルプには以下のような記述があります。

任意の有効な文字列式または数式を指定します。

数式だけではく、文字列式も指定できると書かれています。

試しに、
全角で指定した
  var = "TRUE"
文字を連結した
  var = "t" & "r" & "u" & "e"
VBAのChr関数で取得した文字を連結した
  var = Chr(116) & Chr(114) & Chr(117) & Chr(101)
をCBool関数の引数に指定してみると、いずれもTrueに変換されます。

数学の場合、真を「T」、偽を「F」と記述することがあるので、
  var = "T"
あるいは、
  var = "F"
を指定した場合、いずれも「実行時エラー '13: 型が一致しません。'」となります。

空白文字列をFalseと評価するプログラミング言語もありますから、CBool関数でも空白文字列がFalseに変換される可能性も考えられますが、
  var = ""
でも、「実行時エラー '13: 型が一致しません。'」となります。

任意の有効な文字列式または数式を指定します。

と書かれていますが、文字列の場合に指定できるのは「true」「false」と読めるものに限定されているということです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで数値や文字列を論理値に-CBool関数

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.