Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » 範囲内のセルが空白かを調べるマクロ-CountA・CountBlank

範囲内のセルが空白かを調べるマクロ-CountA・CountBlank

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel vba 範囲内のセルが空白である事を確認する」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。

Excel VBAで、特定の範囲のセルが、空白かどうかを調べるには、どのようなコードを書けばいいのかを探している方による検索です。

「範囲内のセルが空白である」という状態は、実務ではいくつかの可能性が考えられますが、ここではワークシート関数をVBAから利用してチェックするマクロを、2つご紹介します。

[スポンサードリンク]

WorksheetFunction.CountAを使って範囲内のセルが空白かをチェックするサンプルマクロ

本当に何も入力されていない空白状態かを調べるには、COUNTA関数を使うのが簡単です。

Sub 範囲内のセルが空白かを調べる_CountA()
 Dim rng As Range

 Set rng = Range("A1", "A5")
 If WorksheetFunction.CountA(rng) = 0 Then
  MsgBox "空白です。"
 Else
  MsgBox "空白ではありません。"
 End If
End Sub

上記のマクロを実行すると、A1:A5セルが空白なら「空白です。」空白でなければ「空白ではありません。」とメッセージが表示されます。

セル範囲をオブジェクト変数にセットしている、
  Set rng = Range("A1", "A5")
の右辺は、Rangeオブジェクトを返すオブジェクト式であれば、なんでもOKです。

空白ではないセルをカウントするCOUNTA関数をVBAから利用して、
  If WorksheetFunction.CountA(rng) = 0 Then
「0」かどうかを調べて空白かを判定しています。

WorksheetFunction.CountBlankを使って範囲内のセルが空白かをチェックするサンプルマクロ

例えば、IF関数を使って何らかの条件のときに「""」(空白文字列)を入力するような数式が存在しているセルの場合、上記の方法では空白の判定ができません。

その場合はCOUNTBLANK関数を使った以下のようなマクロです。

Sub 範囲内のセルが空白かを調べる_CountBlank()
 Dim rng As Range

 Set rng = Range("A1", "A5")
 If WorksheetFunction.CountBlank(rng) = rng.Count Then
  MsgBox "空白です。"
 Else
  MsgBox "空白ではありません。"
 End If
End Sub

COUNTBLANK関数は、数式で作られた空白も空白としてカウントしてくれますから、数式が入力されているセルの空白判定を行うには、
  If WorksheetFunction.CountBlank(rng) = rng.Count Then
と、WorksheetFunction.CountBlankの戻り値(空白セルの数)と、rng.Count(セル範囲全体の数)を比較することで可能になります。

最終更新日時:2018-09-14 11:55

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » 範囲内のセルが空白かを調べるマクロ-CountA・CountBlank

「WorksheetFunction」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.