VBA開発

セルの追加/行の挿入/列の挿入【Insertメソッド】

構文

Object.Insert(Shift, CopyOrigin)

定数

引数説明引数を省略した場合
Object対象となるオブジェクトを指定
・Range オブジェクト
省略不可
ShiftxlShiftDown→挿入後下に移動挿入する内容によって自動判別
xlShiftToRight→挿入後右に移動
CopyOriginxlFormatFromLeftOrAbove  →左または上と同じ書式を適用挿入する内容によって自動判別
xlFormatFromRightOrBelow→右または下と同じ書式を適用

コードサンプル

Public Sub sample_Insert_method()

    '■2行目に行挿入
    Rows(2).Insert
    '■3列目(C列)に列挿入
    Columns(3).Insert
    
    '■5行目から8行目まで複数行を挿入
    Rows("5:8").Insert
    '■B列からC列目まで複数列を挿入
    Columns("B:C").Insert
    
    '■ズレます■1行目、3行目~5行目まで複数行を挿入
    Range("1:1,3:5").Insert  '実際には1行目が追加、4~6行目が追加となる
    '■ズレます■A列、C列~E列まで複数列を挿入
    Range("A:A,C:E").Insert  '実際にはA列が追加、D~F列目が追加となる
    
    '■オプションはセル追加の場合に使用するケースが多いです。
    '■セルを追加挿入後、元のセルは右へ移動、右の書式を利用
    Range("A1:C3").Insert Shift:=xlShiftToRight, CopyOrigin:=xlFormatFromRightOrBelow
    '■セルを追加挿入後、元のセルは下へ移動、上の書式を利用
    Range("A1:C3").Insert Shift:=xlShiftDown, CopyOrigin:=xlFormatFromLeftOrAbove
    
End Sub

注意

・引数Shiftを省略した場合、挿入後の移動方向は自動的に決まります

対象挿入後の方向
右方向
下方向
セル範囲(縦長)右方向
セル範囲(横長)下方向
セル範囲(正方形)下方向

セル範囲の場合は形によって変わりますので、省略しない方が望ましいです。

関連記事

一行おきに空白行を挿入する【ExcelVBA】
ループ中に条件を満たす行の行削除を行う【ExcelVBA】
ループ中に条件を満たす列の列削除を行う【ExcelVBA】

 

コメント

タイトルとURLをコピーしました