Excel VBA_行を追加/削除する際に注意したいこと
この記事ではVBAで行を追加/削除する際の注意点についてまとめます。行を追加すると行が1行下にズレます。そのため下から上に向かって処理を行っていく必要があるのです。
これは行を追加/削除した場合のExcelの動きが関係しているのですが、実際に行を操作しながら確かめてみましょう。例えばここでは3行目の部分で行を挿入してみます。
3行目で行を追加
そうすると4行目
と書かれたセルは5行目へ移動してしまいます。そのためココのセルに対して何かしらの処理をするには、5行目のセルを操作しなければなりません。
「4行目」と書かれたセルは5行目に
下から上に向かって処理をする
そこで行を追加/削除する際には下から上に向かって処理をすることがポイントになります。 先ほどの例でいえば4行目で行の追加処理をしたとしても、それより上のセルには何も影響がありません。
上のセルには何も影響がない
こういったExcelの動きを理解しながらマクロを組む必要がある点を理解しておきましょう。
上から行を挿入する
下記のような商品と金額が10個並んだ表に対して、1行おきに空白行を挿入していきます。
1行おきに行を追加するコードは下記となります。Step -1
によって、下から処理を遡っていく点に注目して下さい。
Dim i As Long
For i = 20 To 4 Step -1
Rows(i).Insert
Next
実行結果は以下のようになります。
1行おきに追加した行を削除
先ほどの1行おきに追加した行を元に戻したい場合は下記のコードを実行します。
Dim i As Long
For i = 36 To 4 Step -2
Rows(i).Delete
Next
36行目からスタートして、2行おきに行を削除している点に注目して下さい。下から遡っていけば上の行には影響がないため2行おきに削除行を指定できます。
下に3行追加する場合
では商品名の下の3行追加する場合はどうなるのでしょうか?(商品の説明などで欄をもっと広く取りたい場合など)「下から上に処理をする」という基本は同じですが、挿入する行の数を増やす必要があります。
Dim i As Long
For i = 20 To 4 Step -1
Rows(i & ":" & i + 2).insert
Next
Rowsで選択する範囲の行を増やしている点に注目して下さい。ここでは「現在選択されている行+2行」つまり合計3行が選択されています。3行選択した状態で行の追加を行うことで、3行挿入することができます。
逆に追加した行を削除したい場合、起点となるセルの選択に気を付けて下さい。ここではStep -4
によって4つずつセルを遡っています。
Dim i As Long
For i = 36 To 4 Step -4
Rows(i & ":" & i + 2).delete
Next
「〇行ずつ挿入する」という作業を実務でも多くありますので、ぜひマクロを使って効率的に進めていきましょう。
Discussion