Microsoft Excel VBA でセルが空かどうかを確認するさまざまな方法

Bilal Shahid 2023年6月21日
  1. セルが空かどうかを確認する方法
  2. 方法 1: IsEmpty 関数
  3. 方法 2: vbNullString と比較する
  4. 方法 3: 空の文字列と比較する
  5. 方法 4: Len 関数
  6. 方法 5: Count および Counta 関数
  7. 方法 6: IsNull 関数
  8. まとめ
Microsoft Excel VBA でセルが空かどうかを確認するさまざまな方法

VBA は、さまざまな機能をユーザーに提供する Microsoft Excel アプリケーション用のプログラミング言語です。 この記事では、セルが空かどうかを確認する方法について学習します。

セルが空かどうかを確認する方法

MS Excel では、セルは行と列の交点として識別されるブロックであり、行番号と列文字を識別子として持ちます。 これらのセルは、さまざまな種類のデータを保持できます。

ただし、データを保持していないセルを指す空のセルを使用することもできます。

MS Excel では、セルにデータが含まれているかどうかを確認しなければならない状況が数多くあります。 これを行うのを支援するために、MS Excel VBA には、セルが空かどうかを確認するための複数の方法が用意されています。

これらのメソッドについては、以下で詳しく説明し、理解を深めるのに役立つ VBA コードの例を示します。

方法 1: IsEmpty 関数

Excel VBA の IsEmpty 関数は、ブール値を返す組み込み関数です。 この関数をセルと一緒に使用して、変数が初期化されていないかどうかを確認することもできます。

次の構文があります。

IsEmpty(value)

ここで、value はチェックするセルまたは変数です。

セルが空の場合、または変数が初期化されていない場合、この関数は True を返します。 それ以外の場合、False を返します。

注: ワークシート セルの値が空白かどうかを確認する場合は、数式バーで IsBlank(値) ワークシート関数を使用することもできます。 ただし、VBA で IsEmpty 関数の代わりに IsBlank 関数を使用することはできません。

以下のコードを使用して、いくつかの単純なセルで IsEmpty 関数をテストしてみましょう。 以降の例でも、同じ 2つのセルを使用します。

セルが空ではありません

Sub ExampleIsEmpty()

If IsEmpty(Range("A1")) = True Then
MsgBox "Cell A1 is empty"
Else
MsgBox "Cell A1 is not empty"
End If

If IsEmpty(Range("A2").Value) = True Then
MsgBox "Cell A2 is empty"
Else
MsgBox "Cell A2 is not empty"
End If

End Sub

このコードを実行すると、メッセージ ボックスに次の出力が表示されます。

セル A1 は空ではありません

セル A2 は空です

IsEmpty(Range("A1"))IsEmpty(Range("A2").Value) の両方をどのように使用したかに注目してください。 どちらもうまくいきます。

方法 2: vbNullString と比較する

セルに値が含まれていないかどうかを確認したい場合は、vbNullString と比較することもできます。 vbNullString は、文字列の Null 値を保持する定数です。

比較の結果、セルの値が vbNullString に等しいことが示された場合、セルは空であると結論付けることができます。

次のコードは、vbNullString 定数を使用して空のセルをチェックする方法を示しています。

Sub ExamplevbNullString()

If Range("A1").Value = vbNullString Then
MsgBox "Cell A1 is empty"
Else
MsgBox "Cell A1 is not empty"
End If

If Range("A2").Value = vbNullString Then
MsgBox "Cell A2 is empty"
Else
MsgBox "Cell A2 is not empty"
End If

End Sub

ここでも、出力によって次のメッセージ ボックスが表示されることがわかります。

セル A1 は空ではありません

セル A2 は空です

注: セルに値がなく、#N/A! のようなエラーが含まれている場合、このメソッドは機能しません。 したがって、IsEmpty 関数を使用する方が安全です。

方法 3: 空の文字列と比較する

同様の方法は、セルに存在する値を、コードで "" として定義されている空の文字列と比較することです。 比較が True を返す場合、セルは空であり、それ以外の場合は空ではありません。

"" との比較を使用して、セルが空かどうかを判断する例を次に示します。

Sub ExampleEmptyString()

If Range("A1").Value = "" Then
MsgBox "Cell A1 is empty"
Else
MsgBox "Cell A1 is not empty"
End If

If Range("A2").Value = "" Then
MsgBox "Cell A2 is empty"
Else
MsgBox "Cell A2 is not empty"
End If

End Sub

出力は次のようになります。

セル A1 は空ではありません

セル A2 は空です

方法 4: Len 関数

セルが空かどうかを確認するために、そこにあるデータの長さを計算し、ゼロに等しいかどうかを比較することもできます。

長さがゼロに等しい場合、セルは空であると言え、データが含まれていないことを意味します。 それ以外の場合、セルは空ではないと言います。

VBA 組み込みの Len 関数を使用して、データの長さを計算します。 次の構文があります。

Len(value)

ここで、value は確認したいセルの値です。

Len 関数を使用してセルが空かどうかを判断するコード例を見てみましょう。

Sub ExampleLen()

If Len(Range("A1").Value) = 0 Then
MsgBox "Cell A1 is empty"
Else
MsgBox "Cell A1 is not empty"
End If

If Len(Range("A2").Value) = 0 Then
MsgBox "Cell A2 is empty"
Else
MsgBox "Cell A2 is not empty"
End If

End Sub

予想どおり、次の出力が得られます。

セル A1 は空ではありません

セル A2 は空です

方法 5: Count および Counta 関数

Count および Counta 関数は、指定された範囲内の空でないセルの数を返す VBA のワークシート関数です。 それらの違いは、Count 関数は数値のみをカウントするのに対し、Counta 関数は任意のデータに対して機能することです。

これらの関数を利用して、特定のセルが空かどうかを確認できます。 カウントが 0 として返される場合、関数は空でないセルのみをカウントするため、セルは空です。

Count 関数ではなく Counta 関数を使用することをお勧めします。これは、Count 関数がテキストまたは文字列型のデータを空白と見なすためです。

次のコードは、Counta 関数を使用して空のセルをチェックする方法を示しています。

Sub ExampleCounta()

If Application.WorksheetFunction.CountA(Range("A1")) = 0 Then
MsgBox "Cell A1 is empty"
Else
MsgBox "Cell A1 is not empty"
End If

If Application.WorksheetFunction.CountA(Range("A2")) = 0 Then
MsgBox "Cell A2 is empty"
Else
MsgBox "Cell A2 is not empty"
End If

End Sub

出力は期待どおりです。

セル A1 は空ではありません

セル A2 は空です

方法 6: IsNull 関数

セルに Null 値が含まれているかどうかを確認する別の方法は、IsNull 関数を使用することです。 これは、ブール値を返す VBA の組み込み関数でもあります。値が Null に等しい場合は True、それ以外の場合は False です。

この関数がセルの値に対して True を返す場合、そのセルは空であると結論付けることができます。

IsNull 関数の構文は次のとおりです。

IsNull(value)

ここで、value は確認したいセルの値です。

ただし、注意すべき点として、Null 値は本来セルに割り当てられるわけではありません。 したがって、多くの場合、このメソッドは機能せず、セルの値が NULL と等しくないため、セルが空白であっても空ではないと判断します。

まとめ

この記事では、Excel VBA でセルが空かどうかを確認する 6つの方法について説明しました。

  1. IsEmpty 関数
  2. vbNullString との比較
  3. 空文字列との比較
  4. Len 関数
  5. CountCounta 関数
  6. IsNull 関数

これらの概念を理解していただければ幸いです。 学び続けます!

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - VBA Cell