Emptyの概要
変数が未初期化かどうかを判定する VBAの予約語 | ||
Empty 概要 Empty は、VBAの わかりやすく説明 Variant型の変数が、値を設定されていない状態であることを示す特別な値。 |
||
|
Emptyを使った基本的な判定方法
以下の例では、Empty の状態を IsEmpty
関数を使って判定します。
Sub TestEmpty()
Dim vData As Variant
If IsEmpty(vData) Then
MsgBox "vData は未初期化(Empty)です。"
Else
MsgBox "vData には値が設定されています。"
End If
End Sub
解説:
Dim vData As Variant
: 変数vData
をVariant
型として宣言。- 何も代入しない状態では
Empty
となる。 IsEmpty(vData)
で変数がEmpty
かどうかを判定。
EmptyとNull、””(空文字)との違い
Empty、Null、空文字(””)はそれぞれ異なる概念です。
Sub CompareEmptyNull()
Dim vEmpty As Variant
Dim vNull As Variant
Dim vString As String
vNull = Null
vString = ""
MsgBox "IsEmpty(vEmpty): " & IsEmpty(vEmpty) & vbCrLf & _
"IsNull(vNull): " & IsNull(vNull) & vbCrLf & _
"vString = """": " & (vString = "")
End Sub
解説:
Empty
: 変数が未初期化の状態(IsEmpty
で判定)。Null
: データベースで使用される「値なし」の状態(IsNull
で判定)。""
: 空の文字列(通常の比較演算子で判定)。
Excel VBAでのEmptyの活用
Excelのセルの値が未入力かどうかを判定する例です。
Sub CheckEmptyCell()
Dim cellValue As Variant
cellValue = Range("A1").Value
If IsEmpty(cellValue) Then
MsgBox "セルA1は未入力です。"
Else
MsgBox "セルA1の値: " & cellValue
End If
End Sub
解説:
- セルA1の値を取得し、変数
cellValue
に代入。 IsEmpty(cellValue)
で未入力かどうかを判定。
Emptyの注意事項
- Empty は Variant 型でのみ使用可能: 他のデータ型では適用されない。
- 数値や文字列に代入すると Empty ではなくなる: 一度でも値を代入すると Empty には戻せない。
- データベースの Null とは異なる:
Empty
は未初期化、Null
は「値なし」を意味する。
よくある質問
- Q: Empty を数値型の変数に適用できますか?
- A: いいえ。Empty は
Variant
型の変数でのみ有効です。 - Q: 一度値を設定した後に Empty に戻せますか?
- A: いいえ。Variant 型の変数は、一度値を代入すると Empty に戻せません。
- Q: IsEmpty で文字列の空白(””)を判定できますか?
- A: いいえ。空文字(””)は Empty ではないため、
IsEmpty
ではなく= ""
で判定します。
まとめ
- Empty は
Variant
型の変数が未初期化であることを示す特別な値。 IsEmpty
関数を使って Empty かどうかを判定できる。- Excel VBAでセルの未入力チェックや変数の初期化判定に活用できる。
- 一度値を代入すると Empty には戻せないため注意が必要。