セル/行/列を挿入する(Insertメソッド)|Excel VBA |
対象セル範囲と同じサイズの空白セルを挿入します。
構文 Object.Insert(Shift, CopyOrigin)
設定項目 | 内容 |
---|---|
Object | Rangeオブジェクト |
Shift | 挿入後にセルを移動する方向を指定。 下に移動(xlShiftDown)、右に移動(xlShiftToRight)[省略可能] |
CopyOrigin | コピー元を指定[省略可能] |
引数Shiftを省略すると、挿入対象となるセル範囲の形に応じて自動的に移動する方向が決まります。
列が対象の場合は必ず右方向、行が対象の場合には必ず下方向に移動します。
セル範囲が縦長の場合は右方向、横長か正方形の場合は下方向に移動します。
対象が行/列以外の場合は特に、引数Shiftは省略しない方が良いでしょう。
次のサンプル1は、3行目以降の行に1行おきに空白行を挿入します。
Sub Sample1()
Dim myLastRow As Long
Dim i As Long
'データの最終行を取得
myLastRow = Cells(Rows.Count, 1).End(xlUp).Row
'最終行から上方向にループ
For i = myLastRow To 3 Step -1
Rows(i).Insert Shift:=xlDown
Next i
End Sub
セル/行/列を挿入すると、それ以降のセル範囲のアドレスが対象セル範囲の行数/列数分だけずれていきます。したがって、セル範囲の挿入を繰り返し行う場合は、下から上方向/右から左方向に処理してください。
次のサンプル2も1行おきに空白行を挿入します。
ただし、サンプル2ではRangeプロパティを使用し、連続したセル範囲を複数の領域として処理しています。
対象となる領域が複数の場合には、それぞれの領域に対して一括して挿入されるため、行番号の不整合が発生しません。
Sub Sample2()
Range("3:3,4:4,5:5,6:6").Insert Shift:=xlDown
End Sub