0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】IsEmpty関数|変数やセルが空か判定する方法と注意点

0
Last updated at Posted at 2025-07-24

この記事では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でよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?