「excel vba 範囲内のセルが空白である事を確認する」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
Excel VBAで、特定の範囲のセルが、空白かどうかを調べるには、どのようなコードを書けばいいのかを探している方による検索です。
「範囲内のセルが空白である」という状態は、実務ではいくつかの可能性が考えられますが、ここではワークシート関数をVBAから利用してチェックするマクロを、2つご紹介します。
WorksheetFunction.CountAを使って範囲内のセルが空白かをチェックするサンプルマクロ
本当に何も入力されていない空白状態かを調べるには、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関数を使った以下のようなマクロです。
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