VBAで処理をしていると、次のようなことはありませんか?
- 変数に値が入っているか確認したい
- 空のセルかどうか判定したい
- 未入力チェックをしたい
このような場合は、IsEmpty関数を使うことで解決できます。
値が「空かどうか」を判定できる、エラー防止にも重要な関数です。
この記事では、IsEmptyの基本から実務で使える活用方法までを初心者向けに分かりやすく解説します。
この記事でできること
- 変数が空かどうか判定できる
- セルの未入力チェックができる
- エラーを防ぐ安全なコードが書ける
基本:IsEmpty関数の使い方
基本構文はこちらです。
IsEmpty(値)
例:
MsgBox IsEmpty("")
→ False
戻り値の意味
| 結果 | 意味 |
|---|---|
| True | 未初期化(Empty) |
| False | 値が入っている |
基本例:変数が空かチェックする
Option Explicit
Sub CheckEmpty()
Dim val As Variant
If IsEmpty(val) Then
MsgBox "値が入っていません"
Else
MsgBox "値が入っています"
End If
End Sub
Variant型の未代入変数に対して使用します。
セルの空チェックに使う場合
セルの値にも使用できます。
If IsEmpty(Range("A1").Value) Then
MsgBox "A1は空です"
End If
よくある未入力チェック
If IsEmpty(Range("A1").Value) Then
MsgBox "入力してください", vbExclamation
Exit Sub
End If
入力チェックでよく使うパターンです。
IsEmptyと””(空文字)の違い
ここが非常に重要です。
| チェック方法 | 意味 |
|---|---|
| IsEmpty | 未初期化かどうか |
| “” | 空文字かどうか |
例
Dim val As Variant
val = ""
MsgBox IsEmpty(val) ' False
MsgBox val = "" ' True
IsEmptyは「値が一度も入っていない」場合のみTrueになります。
注意:String型では使えない
String型は常に空文字で初期化されるため、IsEmptyは使えません。
Dim str As String
MsgBox IsEmpty(str) ' 常にFalse
→ Stringは “” で判定する必要があります。
実務でよくある使い方
- 入力チェック
- 未設定変数の判定
- 処理分岐
- エラー防止
特に「安全なコード」を書くために重要です。
よくあるエラーと対処法
① 空なのにFalseになる
空文字(“”)が入っている可能性があります。
② String型で判定できない
StringはIsEmptyではなく “” で判定してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- IsEmptyは「未初期化かどうか」を判定
- Variant型で使用するのが基本
- 空文字とは別物
- 入力チェックやエラー防止に必須
IsEmpty関数を使いこなせるようになると、エラーに強いVBAコードが書けるようになります。
特に入力チェックでは非常に重要なので、しっかり理解しておきましょう。

コメント