Excel VBA 逆引き集 | 空白セル

Excel VBA
スポンサーリンク

空白セルを処理

Excelで「空白セルだけ処理したい」「フィルタで絞り込んだ後に空白セルだけ対象にしたい」といった場面はよくあります。
このとき便利なのが SpecialCells(xlCellTypeBlanks)AutoFilter の組み合わせです。初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • SpecialCells(xlCellTypeBlanks)
    → 範囲内の「空白セル」だけを抽出できる。
  • SpecialCells(xlCellTypeVisible)
    → フィルタや非表示を無視して「見えているセル」だけ対象にできる。
  • 組み合わせると強力
    → 「フィルタ後の空白セルだけ処理」が可能。
  • エラー処理が必須
    → 空白セルが存在しない場合はエラーになるので On Error Resume Next を入れる。

テンプレ1:空白セルだけ色付け

Sub HighlightBlanks()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("A1:D20")

    Dim blankRg As Range
    On Error Resume Next
    Set blankRg = rg.SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not blankRg Is Nothing Then
        blankRg.Interior.Color = vbYellow
    End If
End Sub
VB
  • ポイント:
    • 範囲内の空白セルだけ黄色に。
    • 値や数式が入っているセルは対象外。

テンプレ2:空白セルに「未入力」と文字を入れる

Sub FillBlanks()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("B2:B20")

    Dim blankRg As Range, c As Range
    On Error Resume Next
    Set blankRg = rg.SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not blankRg Is Nothing Then
        For Each c In blankRg
            c.Value = "未入力"
        Next c
    End If
End Sub
VB
  • ポイント: 空白セルだけに「未入力」と入力。

テンプレ3:AutoFilter+空白セルだけ処理

Sub FilterAndBlanks()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("A1:C20")

    ' A列で「東京」だけフィルタ
    rg.AutoFilter Field:=1, Criteria1:="東京"

    Dim blankRg As Range
    On Error Resume Next
    Set blankRg = rg.SpecialCells(xlCellTypeBlanks).SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Not blankRg Is Nothing Then
        blankRg.Interior.Color = vbRed
    End If

    ' フィルタ解除
    ws.AutoFilterMode = False
End Sub
VB
  • ポイント:
    • フィルタで「東京」だけ表示。
    • さらに「空白セルだけ赤色」に。

テンプレ4:空白セルをカウント

Sub CountBlanks()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C2:C50")

    Dim blankRg As Range
    On Error Resume Next
    Set blankRg = rg.SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not blankRg Is Nothing Then
        MsgBox "空白セルの数=" & blankRg.Count
    End If
End Sub
VB
  • ポイント: 空白セルの件数を数える。

例題で練習

'例1:空白セルだけ色付け
Sub Example1()
    HighlightBlanks
End Sub

'例2:空白セルに「未入力」と入力
Sub Example2()
    FillBlanks
End Sub

'例3:フィルタ後の空白セルだけ処理
Sub Example3()
    FilterAndBlanks
End Sub

'例4:空白セルをカウント
Sub Example4()
    CountBlanks
End Sub
VB

初心者向けポイント

  • xlCellTypeBlanks → 空白セルだけ対象。
  • xlCellTypeConstants / xlCellTypeFormulas → 定数セルや数式セルだけ対象。
  • xlCellTypeVisible → フィルタや非表示を無視して「見えているセル」だけ対象。
  • 組み合わせると強力 → 「フィルタ後の空白セルだけ処理」が可能。
  • エラー処理を忘れない → 空白セルがないとエラーになる。

👉 この「SpecialCells / AutoFilter × 空白セルテンプレ」を覚えておけば、Excel VBAで 入力漏れチェック・空白セルへの一括処理・フィルタ後の空白セル操作 を高速に実務へ応用できます。

タイトルとURLをコピーしました