Microsoft Excel VBA でセルが空かどうかを確認するさまざまな方法
- セルが空かどうかを確認する方法
-
方法 1:
IsEmpty
関数 -
方法 2:
vbNullString
と比較する - 方法 3: 空の文字列と比較する
-
方法 4:
Len
関数 -
方法 5:
Count
およびCounta
関数 -
方法 6:
IsNull
関数 - まとめ
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
このコードを実行すると、メッセージ ボックスに次の出力が表示されます。
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
ここでも、出力によって次のメッセージ ボックスが表示されることがわかります。
注: セルに値がなく、
#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
出力は次のようになります。
方法 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
予想どおり、次の出力が得られます。
方法 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
出力は期待どおりです。
方法 6: IsNull
関数
セルに Null
値が含まれているかどうかを確認する別の方法は、IsNull
関数を使用することです。 これは、ブール値を返す VBA の組み込み関数でもあります。値が Null
に等しい場合は True
、それ以外の場合は False
です。
この関数がセルの値に対して True
を返す場合、そのセルは空であると結論付けることができます。
IsNull
関数の構文は次のとおりです。
IsNull(value)
ここで、value
は確認したいセルの値です。
ただし、注意すべき点として、Null
値は本来セルに割り当てられるわけではありません。 したがって、多くの場合、このメソッドは機能せず、セルの値が NULL
と等しくないため、セルが空白であっても空ではないと判断します。
まとめ
この記事では、Excel VBA でセルが空かどうかを確認する 6つの方法について説明しました。
IsEmpty
関数vbNullString
との比較- 空文字列との比較
Len
関数Count
とCounta
関数IsNull
関数
これらの概念を理解していただければ幸いです。 学び続けます!
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