ある条件に一致するセルだけを参照して操作する方法に、Range オブジェクトの SpecialCells メソッドを利用する方法があります。
SpecialCells メソッドの引数にセルの種類を指定して、空白セルや数式セルを参照することができます。
空白セルの参照
次のコードを実行するとデータが入力できます。(書式は設定してください。)
Sub データ5370_1() Range("A1") = "売上表" Range("A3") = "日付" Range("B3") = "分類" Range("C3") = "品名" Range("D3") = "単価" Range("E3") = "個数" Range("F3") = "合計" Range("A4") = "2021/10/1" Range("B4") = "C1" Range("C4") = "封筒" Range("D4") = 5000 Range("E4") = "" Range("F4") = "=D4 * E4" Range("A5") = "2021/10/2" Range("B5") = "C2" Range("C5") = "メモ帳" Range("D5") = 3500 Range("E5") = 12 Range("F5") = "=D5 * E5" Range("A6") = "2021/10/3" Range("B6") = "S1" Range("C6") = "名刺セット" Range("D6") = 4500 Range("E6") = 10 Range("F6") = "=D6 * E6" Range("A7") = "2021/10/4" Range("B7") = "D1" Range("C7") = "ネームペン" Range("D7") = 2200 Range("E7") = 12 Range("F7") = "=D7 * E7" Range("A8") = "" Range("B8") = "D2" Range("C8") = "ネームペンセット" Range("D8") = 3200 Range("E8") = "" Range("F8") = "=D8 * E8" Range("A9") = "2021/10/5" Range("B9") = "S1" Range("C9") = "名刺セット" Range("D9") = 4500 Range("E9") = 8 Range("F9") = "=D9 * E9" End Sub
空白セルの参照
CurrentRegionプロパティで、表を選択します。
Sub サンプル5370_2() Range("A3").CurrentRegion.Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Interior.Color = RGB(0, 0, 255) End Sub
• Range("A3").CurrentRegion.Select
’セルA3を基準に表を選択します。
• Selection.SpecialCells(xlCellTypeBlanks).Select
’空白のセルを選択します。
• Selection.Interior.Color = RGB(0, 0, 255)
’空白セルの背景を「青」にします。
●マクロの実行結果
■ SpecialCellsの引数
Type | 内 容 |
---|---|
xlCellTypeBlanks | 空白のセル |
xlCellTypeComments | コメントを含むセル |
xlCellTypeConstants | 定数のセル |
xlCellTypeFormulas | 数式のセル |
xlCellTypeVisible | 可視セル |
Value | 内 容 |
xlErrors | エラー値 |
xlLogiccal | 論理値 |
xlNumbers | 数値 |
xlTextValues | 文字 |
セルの文字や数値を削除する
文字や数値のセルを参照して、ClearContents でデータを削除します。
Sub サンプル5370_3() Range("A4:F9").SpecialCells(xlCellTypeConstants, _ xlNumbers + xlTextValues).ClearContents Range("A4:F9").Interior.Pattern = xlNone End Sub
• Range("A4:F9").SpecialCells(xlCellTypeConstants, _
xlNumbers + xlTextValues).ClearContents
’セルA4~セルF9を選択して、文字と数値を削除します。
• Range("A4:F9").Interior.Pattern = xlNone
’セルA4~セルF9を選択して、背景色を元に戻します。
●マクロの実行前
●マクロの実行結果
F列に入っている「数式」は削除されません。
データの無い行を削除する
★ 次の表でA列を指定して、データの無い行を削除します。
Sub サンプル5370_4() Range("A4:A9").SpecialCells(xlCellTypeBlanks) _ .EntireRow.Delete End Sub
• Range("A4:A9").SpecialCells(xlCellTypeBlanks) _
.EntireRow.Delete
’セルA4~セルA9を指定します。
EntireRow.Deleteで行の位置を指定して削除します。
●マクロの実行結果
A列の8行目が削除されました。
★ 次の表でE列を指定して、データの無い行を削除します。
Sub サンプル5370_5() Range("E4:E9").SpecialCells(xlCellTypeBlanks) _ .EntireRow.Delete End Sub
●マクロの実行結果
E列の4行目と8行目が削除されました。
■関連記事■ 空白セルや数式セルの参照
■関連記事■ セル範囲の縮小と拡張
■関連記事■ セル範囲の名前の設定と削除
■関連記事■ セルの内容をコピーして貼り付ける
以上で「空白セルや数式セルの参照」の説明を終わります。