🎋
Excel VBA_1行おきに空白行を挿入/削除
この記事ではVBAで1行おきに空白行を挿入します。下記のような商品と金額が10個並んだ表に対して、1行おきに空白行を挿入していきます。
実行後は下記のような形になります。
空白行を挿入
マクロのコードはこちらです。空白行を挿入するのはその場限りの作業と仮定して、まずは実行できるベタ書きのコードで作成しました。
Dim i As Long
For i = 4 To 20 Step 2
Rows(i).Insert
Next
ポイントとしては下記の通りです。
- 4行目以降で走査を実行するので
i = 3
- 1行置きに空行を挿入するので
Step 2
- 扱っている行の長さは10行なので、およそ2倍の
To 20
と設定
同じことを逆側から行うと次のようになります。
Dim i As Long
For i = 20 To 4 Step -1
Rows(i).Insert
Next
行を挿入した場合、行が追加されてどんどんズレてしまう危険性があります。そのため下からFor文で遡っていって行を追加するのがセオリーとなっています(Step 2
のような面倒なことをしなくても済みます。)
1行おきに追加した行を削除
先ほどの1行おきに追加した行を元に戻したい場合は下記のコードを実行します。
Dim i As Long
For i = 36 To 4 Step -2
Rows(i).Delete
Next
36行目からスタートして、2行おきに行を削除している点に注目して下さい。
空白行の削除
同じ仕組みで空白行を削除することもできます。
Dim i As Long
For i = 21 To 2 Step -1
If Range("B" & i).Value = "" Then
Range("B" & i).EntireRow.Delete
End If
Next
- 21行目に最後の項目があったので
21
からスタート - 1番上の1行は残したいので
To 2
- 上からではなく下から削除しないとセルがズレるので
-1
SpecialCellsによる削除
ちなみにSpecialCellsメソッドを使っても削除が簡単にできます。
Range("B2:B20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
こちらなら一発で処理が完了するので、SpecialCellsメソッドは積極的に使っていくと良いかもしれません。
Discussion