【VBAスタンダード対策】For Each による「空白セル」の判定とカウント
データ入力チェックや未入力セルのカウントなどで頻出するのが、For Each ... Next を使ってセル範囲内の空白セルを1つずつ判定する処理です。空白の判定構文と集計のフローをマスターしましょう。
1. 問題:空白セルの判定とカウント処理
【 問題 】 下記の図のように、Excelシートの A1:B3 のセルに値(一部は空欄)が入力されています。この状態で以下の CountBlankCells プロシージャを実行した際、メッセージボックス(MsgBox)に表示される数値として正しいものはどれでしょうか?
| A | B | |
|---|---|---|
| 1 | 100 | (空白) |
| 2 | (空白) | 200 |
| 3 | 300 | (空白) |
Dim rng As Range
Dim c As Range
Dim blankCount As Long
Set rng = Range("A1:B3")
blankCount = 0
For Each c In rng
If c.Value = "" Then
blankCount = blankCount + 1
End If
Next c
MsgBox blankCount
End Sub
① 2
② 3
③ 6
④ 構文エラー(コンパイルエラー)が発生する
2. 正解:実行結果
正解: ② 3
3. 解説:空白セルの判定構造とトレース
Range("A1:B3") の全6セルを For Each で1セルずつ巡回し、値が空文字("")であるかを判定していきます。
初期値: blankCount = 0
1. セル A1(値: 100) : 100 = "" は False → 加算しない
2. セル B1(値: 空白): "" = "" は True → blankCount = 0 + 1 = 1
3. セル A2(値: 空白): "" = "" は True → blankCount = 1 + 1 = 2
4. セル B2(値: 200) : 200 = "" は False → 加算しない
5. セル A3(値: 300) : 300 = "" は False → 加算しない
6. セル B3(値: 空白): "" = "" は True → blankCount = 2 + 1 = 3
★ 合計3つの空白セルが検出され、メッセージボックスには 3 が表示されます。
ここが試験に出る!: スタンダード試験では、空白セルの判定として If c.Value = "" Then のほかに、If IsEmpty(c.Value) Then や If Len(c.Value) = 0 Then などの構文もよく出題されます。いずれの書き方でも「値が入っていないセル」を判定する仕組みをしっかり整理しておきましょう。
4. まとめ
「セル範囲をFor Eachで巡回し、c.Value = "" でカウントする」。この基本パターンを押さえておけば、実務での未入力チェックや、入力漏れのあるセルへの警告メッセージ表示などを簡単に作成できるようになります。
| A | B | |
|---|---|---|
| 1 | 100 | (空白) |
| 2 | (空白) | 200 |
| 3 | 300 | (空白) |
Dim rng As Range
Dim c As Range
Dim blankCount As Long
Set rng = Range("A1:B3")
blankCount = 0
For Each c In rng
If c.Value = "" Then
blankCount = blankCount + 1
End If
Next c
MsgBox blankCount
End Sub
① 2
② 3
③ 6
④ 構文エラー(コンパイルエラー)が発生する
2. 正解:実行結果
正解: ② 3
3. 解説:空白セルの判定構造とトレース
Range("A1:B3") の全6セルを For Each で1セルずつ巡回し、値が空文字("")であるかを判定していきます。
初期値: blankCount = 0
1. セル A1(値: 100) : 100 = "" は False → 加算しない
2. セル B1(値: 空白): "" = "" は True → blankCount = 0 + 1 = 1
3. セル A2(値: 空白): "" = "" は True → blankCount = 1 + 1 = 2
4. セル B2(値: 200) : 200 = "" は False → 加算しない
5. セル A3(値: 300) : 300 = "" は False → 加算しない
6. セル B3(値: 空白): "" = "" は True → blankCount = 2 + 1 = 3
★ 合計3つの空白セルが検出され、メッセージボックスには 3 が表示されます。
ここが試験に出る!: スタンダード試験では、空白セルの判定として If c.Value = "" Then のほかに、If IsEmpty(c.Value) Then や If Len(c.Value) = 0 Then などの構文もよく出題されます。いずれの書き方でも「値が入っていないセル」を判定する仕組みをしっかり整理しておきましょう。
4. まとめ
「セル範囲をFor Eachで巡回し、c.Value = "" でカウントする」。この基本パターンを押さえておけば、実務での未入力チェックや、入力漏れのあるセルへの警告メッセージ表示などを簡単に作成できるようになります。