行や列を挿入したり削除したりする
VBAで行や列を挿入したり削除したりする方法を紹介します。
不要な行を削除したり、必要な場所に挿入したりという場面はちょくちょく発生しますね(^o^)
行や列を削除したり、挿入したりするには、挿入の場合はInsertメソッド、削除の場合はDeleteメソッドを使います。
挿入する場合
削除する場合
簡単ですね。
指定するRangeオブジェクトには、”行全体”や”列全体”を指定する必要がありますので、ここが注意が必要です。
行全体や列全体の指定
行全体を指定するには、2つの方法があります。
次のサンプルを使って確認していきましょう!
1つ目
行や列をそのまま指定する
RangeやColumns、Rowsを使って、列をそのまま指定する方法です。
Sub sample()
'列の指定
Range("B:B").Select '・・・①
Columns("A:C").Select '・・・②
'行の指定
Range("5:5").Select '・・・③
Rows("3:4").Select '・・・④
End Sub
Selectで各指定の行や列を選択しているコードです。
動画で動きを確認してみましょう。
これは問題ないですね(^o^)
2つ目
指定のセルのEntireRowプロパティやEntireColumnプロパティを使って指定する。
今度は、特定のセルからそのセルと同じ列や行全体を取得する方法です。
セルのオブジェクトのEntrireRowプロパティ・EntireColumnプロパティで取得します。
Sub sample()
'列の指定
Range("A2").EntireColumn.Select '・・・①
'行の指定
Range("B5").EntireRow.Select '・・・②
End Sub
これも、Selectでどこか取得出来ているか確認してみましょう。
指定の条件に一致するセルを探してその行を丸っと削除したい場合などは、こちらの方法の方がやりやすいかもしれませんね。
EntrireRowプロパティ・EntireColumnプロパティ については次の記事でも紹介しています。
行・列の挿入や削除
はい。
それでは今回の本題ですが、行や列を削除したり挿入したりする方法です。
先程指定した行全体、列全体のRangeオブジェクトに対して、InsertメソッドやDeleteメソッドを実行するだけです。
ではやってみましょう!
削除
次のコードで5行目・6行目が削除出来ます。
Sub sample()
'行の削除
Range("5:6").Delete
End Sub
簡単ですね(^o^)
挿入
同じく挿入では、Insertメソッドを実行します。
B列のところに列を挿入してみましょう。
Sub sample()
'列の挿入
Range("B5").EntireColumn.Insert
End Sub
これも同じですね(^o^)
上や下の行の書式を適応したまま行を挿入する
行を挿入したときに、”上”あるいは”下”の書式を引き継ぎたい場合があります。
そんな場合は、Insertメソッドの引数”CopyOrigin”を指定します。
もちろん、EntireRowを使った指定も、直接行全体を指定する方法も使えます。
指定出来る定数は下記です。
xlFormatFromLeftOrAbove | 上行の書式を適応する |
xlFormatFromRightOrBelow | 下行の書式を適応する |
それではやってみましょう。
サンプル
各行違う色の背景をつけた表です。
これに、次のコードを実行します。
2行目に上の行の書式を適応して(xlFormatFromLeftOrAbove)行を挿入するコードです。
Sub sample()
Range("2:2").Insert CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
実行すると次の図のように、1行目の書式が適応されていることが分かります。
同じように、2行目に 下の行の書式を適応して( xlFormatFromRightOrBelow )行を挿入するコード も確認してみます。
Sub sample()
Range("2:2").Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub
実行します。
2行目に行が挿入されて、その下の列”赤”の背景書式が設定さたことが分かります。
書式を適応せずに行を挿入する
引数は指定しなくても、行を挿入すると自動的に適応されてしまう場合もあります。
書式を引き継がない場合は、とくに引数は用意されていませんが、後で挿入した行の書式を消してしまえば同じことですね(^o^)
書式を消すには、ClearFormatsメソッドを使います。
行を挿入したあとに、同じところのこれを実行すればOKです。
Sub sample()
Range("2:2").Insert
Range("2:2").ClearFormats '・・・書式を消す
End Sub
これも動画で確認します。
これで、書式なしの行を挿入することが出来ます(^o^)
コメント