目次

複数行一括削除

今回の投稿では、 Excel マクロでワークシートの連続していない複数行を一括で削除する方法を試してみました。

テスト対象として、以下の画像のワークシートの 2 , 4 , 6 行目の「B」「D」「F」の入力されている行を削除してみたいと思います。「B」「D」「F」の行が削除されると「A」「C」「E」「G」の入力されている行が残りますね。

マクロで 2 , 4 , 6 行目を一括で削除したい。
マクロで 2 , 4 , 6 行目を一括で削除したい。

目次まで戻る

マクロのコード

早速、以下のマクロのコードを作成してみました。 EntireRow プロパティは、指定範囲を含む行の範囲を返すようです。その範囲を Delete メソッドで削除しています。

Sub 連続していない複数行を一括削除()

Range("A2,A4,A6").EntireRow.Delete

End Sub

以下の画像のワークシート上で、上記のマクロを実行してみます。

1 から 7 行目に A から G の値が入力されています。
1 から 7 行目に A から G の値が入力されています。

そうすると、以下の画像の結果になりました。「B」「D」「F」の行が削除されて、「A」「C」「E」「G」の行が残っていますね。

「A」「C」「E」「G」の行が残っています。
「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 プロパティを知ってから、マクロの記述が短く済むようになりました。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿