Excel VBA データ内で空白セルが含まれる行全体を削除する

スポンサーリンク

データ内で空白セルが含まれる行全体を削除する方法

データ内で空白セルがあった場合その空白セルを含む全体行を削除したい場合があります。つまり、一つのデータ固まりを表すレコード内に空白セルがあった場合にそのレコードを削除する方法について解説します。

方法としては、データ範囲を参照するRange【レンジ】オブジェクトのCurrentRegion【カレントリージョン】プロパティでデータ範囲を参照し、特定のセルを参照するRange【レンジ】オブジェクトのSpecialCells【スペシャルセルズ】メソッドを使用して「空白セル」を参照し、参照したセル範囲の行全体を参照するRange【レンジ】オブジェクトのEntireRow【エンタイヤロウ】プロパティを使用して参照した空白セルが含まれる行全体を参照して、Range【レンジ】オブジェクトのDelete【デリイト】メソッドで参照されている行全体を削除します。

SpcialCells【スペシャルセルズ】メソッド

参照したセル範囲の中で引数Type【タイプ】に指定したセルの種類を満たすずべてのセルを参照するには、Range【レンジ】オブジェクトのSpcialCells【スペシャルセルズ】メソッドを使用します。SpcialCells【スペシャルセルズ】メソッドの設定値はExcelの「ホーム」タブの「編集」グループにある「検索と選択」ボタンの「条件を選択してジャンプ」の「選択オプション」ダイアログと同じ内容です。

SpcialCells【スペシャルセルズ】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.SpcialCells(Type[,Value])

  • オブジェクト(必須)
    参照するセル範囲をRange【レンジ】オブジェクトを指定します。
  • Type【タイプ】(必須)
    参照するセルの種類をXlCellType列挙型の定数で指定します。

    XlCellType列挙型
    定数内容
    xlCellTypeAllFormatConditions条件付き書式が
    設定されているセル
    xlCellTypeAllValidation入力規則が
    設定されているセル
    xlCellTypeBlanks空白セル
    xlCellTypeCommentsコメントが
    含まれているセル
    xlCellTypeConstants定数が
    含まれているセル
    xlCellTypeFormulas数式が
    含まれているセル
    xlCellTypeLastCell使われたセル範囲内の
    最後のセル
    xlCellTypeSameFormatConditions同じ条件つき書式が
    設定されているセル
    xlCellTypeSameValidation同じ入力規則が
    設定されているセル
    xlCellTypeVisibleすべての可視セル
  • Value【バリュー】(省略可)
    引数Type【タイプ】にxlCellTypeConstants(定数)またはxlCellTypeFormulas(数式)を指定した場合に、引数Value【バリュー】にXlSpecialCellsValue列挙型の定数を指定して、特定の種類の定数や数式を含むセルだけを参照することができます。省略した場合は、すべての定数および数式が対象になります。

    XlSpecialCellsValue列挙型
    定数内容
    xlNumbers数値のあるセル
    xlTextValuesテキストのあるセル
    xlLogical論理値のあるセル
    xlErrorsエラーのあるセル

EntireRow【エンタイヤロウ】プロパティ

指定したセルやセル範囲を含む行全体を参照するには、Range【レンジ】オブジェクトのEntireRow【エンタイヤロウ】プロパティを使用します。Entire【エンタイヤ】は全体を意味し、Row【ロウ】は行を意味します。

EntireRow【エンタイヤロウ】プロパティの書式と設定値の説明

オブジェクト.EntireRow

  • オブジェクト(必須)
    参照したい行全体のなかのセルまたはセル範囲をRange【レンジ】オブジェクトで指定します。

Delete【デリイト】メソッド

指定したセルやセル範囲を削除するには、Range【レンジ】オブジェクトのDelete【デリイト】メソッドを使用します。セルを削除するとセルが左方向または、上方向にシフトされます。

Delete【デリイト】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.Delete[(Shift)]

  • オブジェクト(必須)
    削除するセルまたはセル範囲をRange【レンジ】オブジェクトで指定します。
  • Shift【シフト】(省略可)
    セルを削除後にセルを移動する方向をXlDeleteShiftDirection列挙型の定数を使用して指定します。省略した場合は、Excelが自動的に移動します。

    XlDeleteShiftDirection列挙型
    定数内容
    xlShiftToLeft左方向にシフトします。
    xlShiftUp上方向にシフトします。

A1セルから始まるデータ範囲の空白セルがある行全体を削除するコード例

Sub 空白セルレコード削除()
 Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

実行結果


以上で、データ内で空白セルが含まれる行全体を削除するについての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告