更新日:、 作成日:
VBA IsEmpty 関数:Variant が初期化されているか判定する
はじめに
Excel VBA マクロの IsEmpty 関数から Variant が初期化されているか判定する方法を紹介します。
IsEmpty 関数は、Variant 型の変数が初期化されているかどうかを判定します。
Empty なら True を返します。
エラーなどが原因で変数を初期化できていないときの判定に使用します。
配列が空か判定するには「IsArray 関数」をご覧ください。
IsEmpty 関数の引数と戻り値
IsEmpty(値)
値が Empty のときは True を返します。それ以外のときは False を返します。
引数「値」 | 判定したい値を指定します。 |
戻り値の型 | ブール型 (Boolean) |
解説
Variant 型の初期値は Empty です。初期化されていないことを表しています。
引数「値」が Empty なら True を返します。それ以外の値なら False を返します。
引数「値」が Nothing なら False を返します。クラスなどの参照型の初期値が Nothing です。
引数「値」が空の配列なら False を返します。
何も入力されていないセルの初期値や、空文字 "" を代入したセルの値は Empty です。
エラーが発生したときの関数の戻り値として Empty を返すと、関数が正常に行われたかどうかを判定できます。
Empty の比較
Empty と 0、""、False を比較すると True を返します。
スポンサーリンク
使用例
IsEmpty 関数の使用例を紹介します。
Variant が初期化されているか判定する
Variant 型の変数が初期化されているか判定します。
Dim v As Variant
Dim b As Boolean
b = IsEmpty(v) ' Variant 型の初期値は Empty
Debug.Print(b) ' True
v = ""
b = IsEmpty(v)
Debug.Print(b) ' False
v = Empty
b = IsEmpty(v)
Debug.Print(b) ' True
Set v = Nothing
b = IsEmpty(v)
Debug.Print(b) ' False
Dim a() As Variant
b = IsEmpty(a)
Debug.Print(b) ' False
Dim i As Integer
b = IsEmpty(i)
Debug.Print(b) ' False
Dim s As String
b = IsEmpty(s)
Debug.Print(b) ' False
Empty と比較する
Empty は数値や文字列などの初期値として比較できます。
Dim v As Variant
Dim b As Boolean
b = IsEmpty(v) ' Variant 型の初期値は Empty
Debug.Print(b) ' True
b = (v = 0)
Debug.Print(b) ' True
b = (v = 1)
Debug.Print(b) ' False
b = (v = "")
Debug.Print(b) ' True
b = (v = "A")
Debug.Print(b) ' False
b = (v = False)
Debug.Print(b) ' True
b = (v = True)
Debug.Print(b) ' False
If v = Empty Then ' 間違った Empty の判定の仕方、= で比較すると 0 でも "" でも True になる
Debug.Print("Empty") ' Empty
End If
関数が正常に行われたか判定する
関数の戻り値に Empty を返すと、正常に処理が行われたかを判定できます。
Sub 実行()
Dim v As Variant
v = 関数(0) ' 不正
If IsEmpty(v) Then
Debug.Print("不正")
Else
Debug.Print("正常")
End If
v = 関数(1) ' 正常
If IsEmpty(v) Then
Debug.Print("不正")
Else
Debug.Print("正常")
End If
End Sub
Function 関数(ByVal i As Integer) As Variant
If i = 0 Then
関数 = Empty ' 代入しなくても初期値は Empty
Exit Function ' 不正な引数のため処理を中止
End If
関数 = True ' 正常な処理
End Function