この記事ではIsEmpty関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
IsEmpty関数の使い方と注意点
IsEmpty関数は、変数にまだ何も値が代入されていない状態かどうかを判定する関数です。
特にVariant型の変数に対して、「値が未設定かどうか」をチェックしたい場面で使います。
引数の型は基本的にVariant型が前提です。
他のデータ型(String型やInteger型など)に使うと、意図しない結果になる場合があります。
構文
IsEmpty(式)
- 式 : 判定したい変数(主にVariant型)
-
戻り値 : まだ値が代入されていない場合は
True、値が一度でも代入されていればFalse
使用例
まだ値が代入されていないかチェックする
Sub Sample()
Dim Myval As Variant
Debug.Print "Myval = (未代入) : " & IsEmpty(Myval)
Myval = ""
Debug.Print "Myval = 空文字 : " & IsEmpty(Myval)
Myval = 0
Debug.Print "Myval = 0 : " & IsEmpty(Myval)
End Sub
▶ 出力結果
Myval = (未代入) : True
Myval = 空文字 : False
Myval = 0 : False
IsEmptyは、変数に**何も代入されていない状態(未使用)**だけをTrueと判定します。
空文字""や0などが代入されていても、それは「使用された」とみなされるためFalseになります。
複数の変数を一括で初期化チェックする
Sub Sample()
Dim a As Variant
Dim b As Variant
Dim c As Variant
b = 1
If IsEmpty(a) Or IsEmpty(b) Or IsEmpty(c) Then
Debug.Print "いずれかの変数が未初期化です"
Else
Debug.Print "すべての変数に値が設定されています"
End If
End Sub
▶ 出力結果
いずれかの変数が未初期化です
このようにIsEmptyを複数の変数に対して使えば、**「初期化されていない変数があるか」**を一括で判定できます。
セルが空かどうかを確認する
Sub Sample()
Dim celval As Variant
celval = Range("A1").Value
Debug.Print IsEmpty(celval)
End Sub
▶ 出力結果(セルA1が未入力の場合)
True
⚠️注意
空文字や0を「未設定」とはみなさない
Sub Sample()
Dim val1 As Variant
Dim val2 As Variant
val1 = ""
Debug.Print IsEmpty(val1)
val2 = 0
Debug.Print IsEmpty(val2)
End Sub
▶ 出力結果
False
False
Variant型以外では意図しない結果になることも
Variant以外の型(String型やInteger型など)に使うと、Falseを返すなど意図した動作にならない場合もあります。
Sub Sample()
Dim Mystr As String
Debug.Print IsEmpty(Mystr)
Dim Myint As Integer
Debug.Print IsEmpty(Myint)
Dim Myboo As Boolean
Debug.Print IsEmpty(Myboo)
End Sub
▶ 出力結果
False
False
セルの値がEmptyとは限らない
空のセルに見えても、空文字や数式の結果である場合、IsEmptyはFalseを返します。
Sub Sample()
Range("A1").Formula = "=""""" ' セルA1に「=""」という式
Debug.Print IsEmpty(Range("A1").Value)
Debug.Print Len(Range("A1").Value) = 0
Debug.Print Range("A1").Value = ""
End Sub
▶ 出力結果
False
True
True
セルの「完全な空白」を確認したい場合はIsEmptyよりも以下の方法が確実です
- Len(Range("A1").Value) = 0
- Range("A1").Value = ""
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方