スポンサーリンク

【VBA】値の判定まとめ|Null・Empty・空文字・Nothingの違いと正しいチェック方法

VBAでは、値の状態に応じて適切な判定方法を使い分ける必要があります
特に NullEmpty""(空文字)Nothing は混同しやすく、誤った条件式はバグにつながります。

本記事では、VBA初心者から実務者まで役立つように、各判定の意味・使い方・違い・チェック例を体系的に解説します。


スポンサーリンク

1. VBAの値判定に使う関数一覧

まずは、よく使う判定関数の全体像を把握しましょう。

判定内容関数 / 演算子説明
Null判定IsNull()値が存在しない(DB用)
Empty判定IsEmpty()変数が未代入
空文字判定x = ""値として空文字が格納
オブジェクト判定Is Nothingオブジェクトが未セット
数値判定IsNumeric()数値または数字文字列か
日付判定IsDate()日付として解釈できるか

ポイント
Null と "" は同じではありません。かならず適切な判定関数を使用します。


スポンサーリンク

2. Null判定(IsNull)|値が存在しない状態

◆ Nullとは?

DB値によくある「存在しない」状態

◆ 判定方法

Dim x As Variant
x = Null

If IsNull(x) Then
    MsgBox "Nullです"
End If

❌ やってはいけない比較

If x = Null Then '← NG(Falseになってしまう)

スポンサーリンク

3. Empty判定(IsEmpty)|値が未代入の状態

◆ Emptyとは?

Variant変数がまだ値を持っていない状態

Dim x As Variant 'Emptyになる

If IsEmpty(x) Then
    MsgBox "Empty(未代入)です"
End If

◆ 型による違い

宣言初期状態
Dim v As VariantEmpty
Dim s As String“”(空文字)

スポンサーリンク

4. 空文字判定(= “”)|文字データが空の状態

Dim s As String
s = ""

If s = "" Then
    MsgBox "空文字です"
End If
状態説明
Empty値がまだ入っていない
“”値として空文字が入っている

5. Nothing判定(Is Nothing)|オブジェクトが未設定

◆ Nothingとは?

オブジェクトがセットされていない状態

Dim wb As Workbook
Set wb = Nothing

If wb Is Nothing Then
    MsgBox "Workbookオブジェクトがありません"
End If

= ではなく Is を使います。


6. 数値・日付の判定(IsNumeric / IsDate)

◆ 数値判定

If IsNumeric("123") Then MsgBox "数値です"

◆ 日付判定

If IsDate("2024/01/01") Then MsgBox "日付です"

7. 「値が入っているか」総合チェック関数(実務向け)

フォーム入力チェックや汎用関数に使える例:

Function HasValue(v) As Boolean
    HasValue = (Not IsNull(v)) _
            And (Not IsEmpty(v)) _
            And (v <> "")
End Function

8. Null・Empty・空文字・Nothingの違いまとめ

状態判定方法主な用途
Null値が存在しないIsNull()DB
Empty未代入IsEmpty()Variant初期値
“”空文字= ""入力文字列
NothingオブジェクトなしIs NothingSet対象

9. 実務での注意ポイント

  • DB値は必ず IsNull() を使う
  • Variant以外は IsEmpty() にならない
  • 空文字(””)は値がある状態
  • オブジェクトは Is Nothing で判定

10. まとめ

VBAの値判定は、用途ごとに正しい関数を使うことが重要です。

  • Null → IsNull
  • Empty → IsEmpty
  • 空文字 → ""
  • Nothing → Is Nothing

この記事の判定リストを参考に、入力チェック・DB処理・オブジェクト操作を安全に実装しましょう。

コメント

タイトルとURLをコピーしました