黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』

セルの挿入(範囲・行・列)

本記事は、Excel C# Script入門講座の1記事です。

セルの挿入(範囲・行・列)

セルの挿入にはRangeオブジェクトのInsertメソッドを使用します。

第1引数により、挿入後のセルのシフト方向を指定することができます。また、第2引数により、挿入後のセルに適用する書式設定をどの方向にあるセルからコピーするかを指定することができます。

Insertメソッドの構文

Insertメソッドは2つの引数をとることができます。この2つの引数は、いずれも省略可能です。

(Rangeオブジェクト).Insert(Shift, CopyOrigin)

Insertメソッドの引数

引数名 必須 / オプション 内容
Shift 省略可能 セルをシフトする方向を指定します。
CopyOrigin 省略可能 コピー元を指定します。
Shiftについて

使用できる定数は、XlInsertShiftDirection クラスの xlShiftToRight または xlShiftDown です。

定数の指定により、挿入後のセルのシフト方向を指定することが出来ます。ExcelCSXにおいては、定数はそのままの記載では呼び出せないため、かわりに対応する数値(各列挙体に割り当てられた数値)を指定して下さい。

引数に指定する定数 enum値 内容
xlShiftToRight -4161 右方向にシフト
xlShiftDown -4121 下方向にシフト

なお、この引数を省略すると、セル範囲の形に応じてシフト方向が自動的に決定されます。

引数を指定しない場合、

  • 行数 <= 列数の場合は挿入後、下方向にシフトし
  • 行数 > 列数の場合は挿入後、右方向にシフトします。

セルの行または列を選択範囲とする場合、

  • 行の場合は挿入後、下方向にシフトし、
  • 列の場合は挿入後、右方向にシフトします。
CopyOriginについて

使用できる定数は、XlInsertFormatOriginクラスのxlFormatFromLeftOrAboveまたはxlFormatFromRightOrBelowです。

定数の指定により、挿入したセルの書式をどのセルからコピーするかの方法を指定できます。

引数に指定する定数 enum値 内容
xlFormatFromLeftOrAbove 0 左または上と同じ書式を適用
xlFormatFromRightOrBelow 1 右または下と同じ書式を適用

サンプルコード

var activeSheet = Excel.ActiveWorkbook.ActiveSheet;
//アクティブなシートのセルB2~C2の範囲にセルを挿入
//(行数 = 列数なので下方向にシフト)
activeSheet.Range("B2:C2").Insert();

f:id:d_ymkw:20160714125029p:plain

var activeSheet = Excel.ActiveWorkbook.ActiveSheet;
//アクティブなシートのセルB2~C5の範囲にセルを挿入
//(行数 > 列数なので右方向にシフト)
activeSheet.Range("B2:C5").Insert();

f:id:d_ymkw:20160714124945p:plain