EXCEL VBA を使て行と列を挿入する

2021年12月25日

Excel VBA を使って処理の自動化を行う場合、行と列の挿入を行うケースが出てきます。
Excel の行と列を挿入するには、基本的にRange.Insert メソッドを使って行と列の挿入範囲と挿入後のセルの移動方向を指定することにより実行できます。サンプルアプリを使って具体的な利用方法について説明します。

  ・『 Range(“[挿入範囲]").Insert shift:=[挿入後のセルの移動方向] 』

行と列を挿入するサンプルアプリの説明

「行の挿入」ボタンをクリックすると7行目に2行挿入されます。

「列の挿入」ボタンをクリックするとC列に2列挿入されます。

Insertメソッドの説明

Insertメソッドの書式
Rangeオブジェクト.Insert Shift:={下記の値},CopyOrigin:={下記の値}
【引数の説明】
  Shift:=
   xlShiftToRight :セルを挿入後、右方向にシフト
   xlShiftDown :セルを挿入後、下方向にシフト
  CopyOrigin:=
   xlFormatFromLeftOrAbove :左または上と同じ書式を適用   
   xlFormatFromRightOrBelow:右または下と同じ書式を適用

さらに、Excel VBAでは Range.EntireRow.Insert を使って指定した範囲を含む行全体を挿入できます。
  Range(“7:8").EntireRow.Insert
また、Range.EntireColumn.Insert を使って指定した範囲を含む列全体を挿入できます。
  Range(“C:D").EntireColumn.Insert

サンプルアプリのソースコード  コードの作成手順はこちら

「行の挿入」ボタンのソースコード

Sub ボタン1_Click()

  'シート名を入れる変数の定義
   Dim wS As Worksheet
  '変数 wS に シート名「Sheet1」をセット
   Set wS = Worksheets("Sheet1")

   'B7~D8の間に2行挿入
    Range("B7:D8").Insert shift:=xlShiftDown, CopyOrigin:=xlFormatFromRightOrBelow
    
  'E17のセルを選択して終了
   Range("A1").Select
        
End Sub

「列の挿入」ボタンのソースコード

Sub ボタン2_Click()

  'シート名を入れる変数の定義
   Dim wS As Worksheet
  '変数 wS に シート名「Sheet1」をセット
   Set wS = Worksheets("Sheet1")

   Dim myLast As Long
  'データ最終行を取得
   myLast = wS.Cells(Rows.Count, 2).End(xlUp).Row

   'C5~D16の間に2列挿入
    Range(Cells(5, 3), Cells(myLast, 4)).Insert shift:=xlShiftToRight, CopyOrigin:=xlFormatFromLeftOrAbove
     
  'E17のセルを選択して終了
   Range("A1").Select
        
End Sub