本ページには広告が含まれています。

ExcelVBA IsEmpty関数 変数がEmptyか判定する

ExcelVBA IsEmpty関数 変数がEmptyかを判定する

Excel VBAの「IsEmpty 関数」について解説します。

スポンサーリンク

IsEmpty 関数とは

Excel VBA の IsEmpty 関数は、引数に指定したバリアント型変数(Variant)が Empty値かどうかを判定し、Boolean値で結果を返します。Empty値だった場合は True、それ以外は False が返ります。

IsEmpty 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

IsEmpty 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

IsEmpty(expression)

引数

引数 説明
expression【必須】バリアント型(Variant)の変数を指定します

戻り値

戻り値説明
ブール値
(Boolean)
Variant が Empty値なら 真 (True)
それ以外は 偽 (False) を返します

※ Variant 型の初期値は Empty です。初期化されていないことを表しています。
※ すなわち、戻り値が True の場合 Variant は初期化されていないということを表しています。

Variant 以外のデータ型の場合は型宣言時に初期化されているため、すべて False が返ります。

解説(使用例)

以下、サンプルコードで IsEmpty 関数の使用例を確認しましょう。

IsEmpty関数サンプル1(基本的な動作確認)

IsEmpty の引数にいろいろな Variant の状況を設定して返される結果を確認してみましょう。

'■IsEmpty関数サンプル1 (基本的な動作確認)
Sub IsEmpty_Sample01()
  Dim v As Variant
  'Variant の初期値は Empty
  Debug.Print IsEmpty(v)  'True
  
  v = ""    '空白文字
  Debug.Print IsEmpty(v)  'False
  
  v = Empty   'Empty値
  Debug.Print IsEmpty(v)  'True
  
  v = Null    'Null
  Debug.Print IsEmpty(v)  'False
  
  Dim arr() As Variant    '動的配列
  Debug.Print IsEmpty(arr)  'False
  
'▼セルの値を検査(セルが空欄の場合はEmpty値です)
  v = Range("A2").Value
  If IsEmpty(v) Then
    MsgBox "セルA2は空です。:" & IsEmpty(v)
  Else
    MsgBox "セルA2の値は、" & v & "です。"
  End If
End Sub

コードを実行した際のイミディエイト画像は省略しています。

IsEmptyTrue を返すのは「Variant型変数を宣言した直後」「Empty値を代入した場合」のみでした。

その他の場合すべて False が返りました。

19~25行目、セルの値を検査した結果の MsgBox 画像がこちらです。

IsEmpty_Sample01 のセルがEmptyだった場合のMsgBox画像

A2セルにはデータが無い状況の結果です。空白セルは Empty値なので変数が Empty となった結果です。

IsEmpty関数サンプル2(判定結果で処理を分岐)

InputBox の戻り値は文字列です。未入力の場合とキャンセルされた場合には “” 空白文字が返ります。そのため、IsEmpty 関数の検査では False となってしまうので、入力用の関数を用意して Empty値を代入するようにしてみました。

'■IsEmpty関数サンプル2 (判定結果で処理を分岐する例)
Sub IsEmpty_Sample02()
  Dim v As Variant
  v = IVal("値を入力してください")  'InputBox入力へ
  '戻り値を判定
  If IsEmpty(v) Then
    MsgBox "値の入力がありませんでした!", vbExclamation
  Else
    MsgBox "入力値は「" & v & "」でした。", vbInformation
  End If
End Sub
'////////////////////////////////////////////////////////
'■InputBox入力用関数
Function IVal(ByVal str As String) As Variant
  Dim a As String
  a = InputBox(str)
  If a = "" Then
    IVal = Empty   '空白の場合 Empty値を返す
  Else
    IVal = a
  End If
End Function

Inputbox で未入力またはキャンセルした結果を IaEmpty で MsgBox の表示を分岐して表示ました。

IsEmpty_Sample02 で InputBox が空欄だった際の MsgBox 画像

以上、これらのサンプルを参考にして、実行時エラー発生の防止などに IsEmpty関数を活用することで、プログラムの信頼性と柔軟性を向上させることができます。

おわりに

Excel VBA IsEmpty 関数は、引数に指定した変数が Empty かどうかを判定し、結果を Boolean値(Emptyの場合 True、それ以外の場合 False)で返します。

True は初期化されていないことを表し False が初期化されていることを表しています。

Empty は、バリアント型 (Variant) 変数の初期値で、変数が初期化されていない状態を表します。
また、Empty を格納できるのはバリアント型 (Variant) だけです。
ただし、配列の場合を除きます。配列の変数の場合は False です。

したがって、バリアント型 (Variant) 以外の変数を IsEmpty 関数で判定した場合、すべて False が返ります。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!