セルを挿入
セルを挿入するにはInsertメソッドを利用します。
指定したセルまたはセル範囲を基点として、右方向または下方向を選択して挿入します。挿入後のセルの書式は隣接するどのセルにするのかを指定できます。
構文
1 |
Rangeオブジェクト.Insert(Shift, CopyOrigin) |
項目 | 説明 |
---|---|
Rangeオブジェクト | 基点となる単一セルまたはセル範囲をRangeオブジェクトで指定します。 |
Shift | 省略可能です。セル挿入前の元のセルが右または下のどちらに移動するのかをXlInsertShiftDirection列挙型で指定します。
|
CopyOrigin | 省略可能です。挿入したセルの書式を隣接するどのセルの書式にするのかをXlInsertFormatOrigin列挙型で指定します。
|
サンプルコード
上の表に対してB3セルにセルを挿入するサンプルです。挿入前のセルは右に移動し、CopyOrigin:=xlFormatFromLeftOrAboveによって左の書式が設定されます。
なお、コメントにしている3行目は4行目と同じようにセルの挿入を行います。3行目と4行目のどちらの書き方でも構いません。
1 2 3 4 5 6 7 8 |
Sub InsertTest1() '// B3セルに挿入 'Call Range("B3").Insert(xlShiftToRight, xlFormatFromLeftOrAbove) Range("B3").Insert Shift:=xlShiftToRight, CopyOrigin:=xlFormatFromLeftOrAbove '// 挿入したセルに入力 Range("B3").Value = "AAA" End Sub |
こちらはCopyOrigin:=xlFormatFromRightOrBelowによって右の書式が設定されるコードです。
1 2 3 4 5 6 7 8 |
Sub InsertTest2() '// B3セルに挿入 'Call Range("B3").Insert(xlShiftToRight, xlFormatFromRightOrBelow) Range("B3").Insert Shift:=xlShiftToRight, CopyOrigin:=xlFormatFromRightOrBelow '// 挿入したセルに入力 Range("B3").Value = "AAA" End Sub |
セル挿入時の注意点
上のサンプルコードでも分かりますが、一部のみにセルの挿入を行うと、その部分だけ表がずれてしまいます。
罫線を使ってこのような表を作成する場合があります。
罫線を使っている場合の表にC3からC5セルを右に挿入すると以下になります。
1 2 3 |
Sub InsertTest1() Range("C3:C5").Insert (xlShiftToRight) End Sub |
ずれを発生させないようにするには表の先頭から最後までをRangeオブジェクトで指定します。上の場合はC2からC8セルを指定するとB列がすべて右に移動します。
1 2 3 |
Sub InsertTest2() Range("C2:C8").Insert (xlShiftToRight) End Sub |
テーブル機能での一部セル挿入はエラーになる
罫線ではなく、Excelの挿入タブ→テーブル で作成した場合も表形式のデータを作成できます。
ただし、セルの挿入では罫線の場合と異なる部分があります。
テーブル機能(Excelの挿入タブ→テーブル)で作成した表に対して一部のセルを挿入した場合はエラーが発生し挿入が出来ません。
1 2 3 |
Sub InsertTest1() Range("C3:C5").Insert (xlShiftToRight) End Sub |
エラーになる原因は一部のみには挿入が出来ないためです。罫線の場合と同様に適切なセル範囲を指定すればエラーにならずにセル挿入が可能です。
1 2 3 |
Sub InsertTest2() Range("C2:C8").Insert (xlShiftToRight) End Sub |