【コピペOK】空白セルを含む行全体を削除する方法を解説!【Excel VBA】
こんにちは!『ルウちゃんのExcel Labo』管理人の@rouxchanblogです!
今回はこのような悩みについて解説します。
空白セルがある行だけを削除したい!
- 空白セルを取得する方法
- 行を削除する方法
- 表の範囲を取得する方法
サンプルコードの紹介
空白セルを削除するには「Specialcellsメソッド」と「EntireRow.Delete」を組み合わせて使います!
まずはサンプルコードと実際の画面を見て動きをイメージしてください!
Dim 範囲 As Range
Set 範囲 = Range("A1").CurrentRegion
範囲.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
このように数量や単価に入力がない行だけを削除することができました!
手作業でやっているとかなりめんどくさい処理なのでコピペでも使えるのでぜひ参考にしてください!
次はこのコードで行われている処理を解説していきます。
表の範囲を取得する方法
Dim 範囲 As Range
Set 範囲 = Range("A1").CurrentRegion
まずは空白セルを探すための範囲を取得します。
このように「Range型」の変数を定義します。
そこにA1セルを対象に「CurrentRegionプロパティ」を入力します。
これだけでA1セルを含む表を範囲として取得することができます。
「CurrentRegionプロパティ」についてもっと詳しく知りたい方はこの記事を参考にしてください。
空白セルを取得する
オブジェクト.SpecialCells(xlCellTypeBlanks)
次に空白セルを取得する方法を解説します。
「SpecialCellsメソッド」で引数に「xlCellTypeBlanks」とすること空白セルを取得できます。
「SpecialCellsメソッド」は他にも数値セルや数式が入っているセルなど、特定のセルを取得することができるので使えるようにしておきましょう!
特定のセルを含む行を削除する方法
特定のセル.EntireRow.Delete
特定のセルを含む行全体を削除するには「EntireRowプロパティ」と「Deleteメソッド」を組み合わせます。
「EntireRowプロパティ」は対象のセルが入っている行全体をオブジェクトとして返してくれますので、そこに「Deleteメソッド」をかけていきます。
注意しなければいけないのは「Rowプロパティ」では同じような処理はできません。
Rowプロパティではなんでできないの??
「Rowプロパティ」は特定のセルが何行目に入っているかを返しますので、オブジェクトではなく数値が返ってきてしまします。
この辺の違いは少し難しいですが、メソッドをかけるにはオブジェクトが必要ということだけは覚えておきましょう!
まとめ
- 表を範囲として取得するには「CurrentRegionプロパティ」
- 特定のセルを取得するには「Specialcellsメソッド」
- 行全体を対象とするには「EntireRowプロパティ」
今回は空白セルを含む行を削除する方法を解説しました!
解説した3つの処理については他のコードにも転用しやすいので使えるようにしておきましょう!
この記事で少しでも皆さんのお役に立てれば幸いです!
忘れないうちにお気に入り登録もお願いします!
ありがとうございました!
コメントはお気軽に!