ExcelVBA(マクロ)でセル・範囲を挿入する方法/Insertメソッドの使い方

billiards IT

Insertメソッドを使うと、セルや範囲を任意の箇所に挿入することが可能です。
また、挿入した箇所に隣接したどのセルの書式を適用するのかも選択することができます。

スポンサーリンク

Insertメソッドの使い方

基本

セル・範囲を挿入する
対象.Insert(Shift,CopyOrigin)
※引数は省略可能
insert1
単体セルを挿入したい場合、Range(“B2”).Insertのように挿入したい箇所を指定します。Cellsで指定してもOKです。
insert2
これを実行すると、
insert3
B2セルにセルが挿入され、B3~4のセルがひとつ下にズレます。
①単体セルの挿入時は、元々あったセルは下にスライドします。
また、②挿入されたセルは、押し出したのと逆方向のセルの書式を引き継ぎます。

範囲指定

insert4
範囲指定して、Range(“A1:B2”).Insertを実行してみます。
insert5
結果はこうです。自動で下にスライドする挿入が選ばれ、押し出したのと逆方向に書式のあるセルがないので、挿入したセルには書式が適用されません。
insert6
押し出す方向は自動で判断され、下にスライド固定ではありません。Range(“A1:A3”).Insertのように縦長の場合、
insert7
右にスライドされます。

Shift(スライド方向)

insert8
Insertメソッドには、ShiftCopyOriginというふたつの引数が用意されています。
先に書くShiftは、挿入時のスライド方向を指定する引数です。
insert9
値はXlInsertShiftDirection列挙型定数で指定します(公式)。
下にスライドする場合はxlShiftDown、右にスライドする場合はxlShiftToRightを記入します。
数字で指定することもできます(それぞれ-4121、-4161)。
insert12
()はなくてもいいですし、
insert13
フィールド名を指定して、Range(“B2”).Insert shift:=xlShiftToRightのように記述してもOKです。
insert10
これで挿入する方向を指定することができます。

CopyOrigin(書式の参照方向)

insert14
CopyOriginは挿入時の書式を引き継ぐ方向を指定できる引数で、xlinsertformatorigin列挙型定数(公式)で指定します。デフォルトだとxlFormatFromLeftOrAbove(上か左から参照)となっています。
insert15
こういう表があったとして、
insert16
デフォルトのinsertだとこう、
insert17
Range(“B2”).Insert xlShiftToRight, xlFormatFromLeftOrAboveであれば、
insert18
こうなります。
insert19
上のコードを少しいじって、Range(“B2”).Insert xlShiftToRight, xlformatfromrightorbelowとしてみます。
xlformatfromrightorbelowは右か下から参照ということなので、つまり挿入したセルは、
insert20
自分が押し出したセルの書式を使用することになります。
insert21
念のため、Range(“B2”).Insert xlShiftDown, xlFormatFromRightOrBelowの場合。

なお、xlFormatFromLeftOrAboveの代わりに0、xlFormatFromRightOrBelowの代わりに1と書いてもOKです。

やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント