VBAでは、CLng関数で論理値を整数に変換できることをご紹介しています。
逆に数値等を論理値に変換するCBool関数の挙動も、
あわせて確認しましょう。
論理値に変換するCBool関数を確認するサンプルマクロ
以下のようなSubプロシージャを作成して、CBool関数でどのようなデータがどう変換されるか確認してください。
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」と読めるものに限定されているということです。
- Newer:ActiveChart.Locationとは
- Older:Word VBAで表のグリッド線の表示を
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで数値や文字列を論理値に-CBool関数