IsEmpty関数

 VBAで使用できる関数です。
 指定した値がEmpty値かどうかをブール型の値(TrueまたはFalse)で返します。
 Empty値はVariant型変数が初期化されていない状態を表すもので、Nullとも異なるものです。

使用例

例1

コード
 Variant型の変数a~eを宣言してb~eについては値を代入し、それぞれEmpty値かどうかを判定しています。

Sub Func_IsEmpty()

    'すべてVariant型
    Dim a As Variant, b As Variant, c As Variant, _
        d As Variant, e As Variant
    
                       ' a : 何もしない
    b = Null           ' b : Nullを代入
    c = ""             ' c : 空文字列を代入
    d = 0              ' d : 0を代入
    e = "こんにちは"   ' e : 適当な文字列を代入

    MsgBox "a : " & IsEmpty(a) & vbCrLf & _
           "b : " & IsEmpty(b) & vbCrLf & _
           "c : " & IsEmpty(c) & vbCrLf & _
           "d : " & IsEmpty(d) & vbCrLf & _
           "e : " & IsEmpty(e)

End Sub

出力
 宣言しただけの変数aのみがTrueとなります。
 b~eのように何かを代入すると、それがNullや空文字などであってもEmpty値とはみなされません。
f:id:accs2014:20190208050907p:plain:left:w200

例2

コード
 配列宣言したVariant型の変数について判定する例です。

Sub Func_IsEmpty()

    Dim a() As Variant      ' a : 動的な配列宣言
    Dim b(2) As Variant     ' b : 静的な配列宣言

    MsgBox "a : " & IsEmpty(a) & vbCrLf & _
           "b : " & IsEmpty(b) & vbCrLf & _
           "b(0) : " & IsEmpty(b(0))

End Sub

出力
 a,bとも何も代入していませんがFalseとなります。
 一方でbの要素であるb(0)はTrueとなります。
f:id:accs2014:20190208070457p:plain:left:w200

例3

コード
 String型の変数a~cについて試したものです。

Sub Func_IsEmpty()

    'すべてString型
    Dim a As String, b As String, c As String
    
                       ' a : 何もしない
                       '     なおStringやLongなどにNullは代入できない
    b = ""             ' b : 空文字列を代入
    c = "こんにちは"   ' c : 適当な文字列を代入

    MsgBox "a : " & IsEmpty(a) & vbCrLf & _
           "b : " & IsEmpty(b) & vbCrLf & _
           "c : " & IsEmpty(c) & vbCrLf

End Sub

出力
 いずれもFalseとなります(String型は宣言した時点で値が空文字列となります。Integer型などは0)。
 IsEmpty関数がTrueを返すのはVariant型の変数だけです。
f:id:accs2014:20190208050904p:plain:left:w200

書式

IsEmpty(値)

 変数名だけでなく文字列や数値を指定することも可能です。このときは当然Falseが返されます。

備考

 -