ポイント
- VBA には対象オブジェクトがブーリアンに変換可能か確かめられるプロシージャを見つけられなかった。。。
- 引数をブーリアン型へ変換する CBol プロシージャを使い、確かめる方法を採った。
- 変換できれば 「True」を返す。
- 変換できなければエラーを発生させるので、それをキャッチして変換できなかった結果「False」を返す。
- 例外を判定に使うのは、例外の本来の用途の観点から、本当は採用したくなかった。。。
VBA コード
Option Explicit
' オブジェクトがブーリアンかどうかを確かめる。
Sub Test()
If IsBoolean("False") Then
Debug.Print "Boolean!"
Else
Debug.Print "Not Boolean><"
End If
End Sub
''' <summary>
''' 引数がブーリアンに変換可能か判定します。
''' </summary>
''' <param name="vntTarget">判定対象オブジェクト</param>
''' <returns>ブーリアンに変換可能な場合は True、そうでない場合は False</returns>
Private Function IsBoolean(ByVal vntTarget As Variant)
On Error GoTo ErrorHandler
Dim blnCheck As Boolean
blnCheck = CBool(vntTarget)
IsBoolean = True
Exit Function
ErrorHandler:
IsBoolean = False
End Function