目次
複数行一括削除
今回の投稿では、 Excel マクロでワークシートの連続していない複数行を一括で削除する方法を試してみました。
テスト対象として、以下の画像のワークシートの 2 , 4 , 6 行目の「B」「D」「F」の入力されている行を削除してみたいと思います。「B」「D」「F」の行が削除されると「A」「C」「E」「G」の入力されている行が残りますね。
マクロのコード
早速、以下のマクロのコードを作成してみました。 EntireRow プロパティは、指定範囲を含む行の範囲を返すようです。その範囲を Delete メソッドで削除しています。
Sub 連続していない複数行を一括削除()
Range("A2,A4,A6").EntireRow.Delete
End Sub
以下の画像のワークシート上で、上記のマクロを実行してみます。
そうすると、以下の画像の結果になりました。「B」「D」「F」の行が削除されて、「A」「C」「E」「G」の行が残っていますね。
上から順番に行を削除した場合
Rows().Delete で上から順番に行を削除した場合は、どんな結果になるでしょうか。
私が以前に上手くいかなかった時の方法です。
Sub 行を上から順番に削除()
Rows(2).Delete '2 行目を削除。
Rows(4).Delete '4 行目を削除。
Rows(6).Delete '6 行目を削除。
End Sub
上のマクロを実行してみると、以下の画像の結果になってしまいました。「A」「C」「D」「F」「G」の行が残ってしまっています。「B」「D」「F」の行が削除されて「A」「C」「E」「G」の行が残っているはずだったのですが何かが違っているようです。
Rows(2).Delete '2 行目を削除。
1 回目の行の削除で A,B,C,D,E,F,G の 2 行目の B が消えて A,C,D,E,F,G が残りますね。
Rows(4).Delete '4 行目を削除。
2 回目の行の削除で A,C,D,E,F,G の 4 行目の E が消えて A,C,D,F,G が残りますね。
Rows(6).Delete '6 行目を削除。値は「F」。
3 回目の行の削除では、 A,C,D,F,G の下の 6 行目の空白行を削除しているので、 A,C,D,F,G がそのまま残りますね。
マクロは正常に動いていますが、方法が違っていたようですね。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
上記「上から順番に行を削除した場合」で行の削除を行って、上手くいかなかった覚えがありますが、 EntireRow プロパティを知ってから、マクロの記述が短く済むようになりました。
以上、閲覧ありがとうございました。