こんにちは、Ryoです。
ワークシートの指定範囲に空白のセルやセル範囲を挿入するInsertメソッド、削除する場合にはDeleteメソッドを利用します。このメソッドは処理後のセルの移動方向(シフト方向)を指定することも可能なのでサンプルを交えて利用や動作について書いていこうと思います。
1.サンプル概要
下の画像に示す簡易的な表を作成し、セルB3:C4範囲を指定して「セル挿入し下方向へシフト」→挿入した「セルを削除して上方向へシフト」、セルB3:C4範囲へ「セル挿入し右方向へシフト」→挿入した「セルを削除して左方向へシフト」する動作をそれぞれのコマンドボタンに割り付けて実行します。
一連の動作は動画の通りです。
セルB3:C4範囲に対してセル挿入を行いますが、この時にシフト方向を下に指定し実行した結果は以下の形になります。
挿入したセル範囲B3:C4を削除し、シフト方向を上に指定することで元の形に戻ります。
同様にセルB3:C4範囲にセル挿入を行い、シフト方向を右に指定するとこのようになります。
挿入したセル範囲の削除を実施する際に左へシフトさせることで元の形に戻ります。
以上がサンプル概要になります。
2.サンプルコード
◆セル「挿入/下方向」へシフト
Sub Sample1() 'セルB3:C4範囲にセルを挿入し、下方向へシフト Range("B3:C4").Insert Shift:=xlDown '※ Shift:= xlShiftDown の記述でも可 End Sub
◆セル「削除/上方向」へシフト
Sub Sample2() 'セルB3:C4の範囲を削除し、上方向へシフト Range("B3:C4").Delete Shift:=xlUp '※ Shift:= xlShiftUp の記述でも可 End Sub
◆セル「挿入/右方向」へシフト
Sub Sample3() 'セルB3:C4の範囲にセルを挿入し、右方向へシフト Range("B3:C4").Insert Shift:=xlToRight '※ Shift:= xlShiftToRight の記述でも可 End Sub
◆セル「削除/左方向」へシフト
Sub Sample4() 'セルB3:C4の範囲を削除し、左方向へシフト Range("B3:C4").Delete Shift:=xlToLeft '※ Shift:= xlShiftToLeft の記述でも可 End Sub
◆Insertメソッド
ワークシートの指定した範囲に空白セルやセル範囲を挿入するにはInsertメソッドを利用します。
構文:オブジェクト.Insert(Shift, CopyOrigin)
引数のShiftで挿入後のセルの移動方向(シフト方向)を指定することができます。この引数Shiftは省略も可能ですが、その場合はExcelが自動的に判断してシフトする形になります。
サンプルでは使用していませんが引数のCoopyOriginはセル挿入後に書式を受け継ぐセルを指定するものです。
≪引数Shiftに指定するXlInsertShiftDirectionクラス定数≫
名前 | 内容 |
xlShiftDown | セル挿入後、下にシフト(xlDownでも可) |
xlShiftToRight | セル挿入後、右にシフト(xlToRightでも可) |
≪引数CopyOriginに指定するXlInsertFormatOriginクラス定数≫
名前 | 内容 |
xlFormatFromLeftOrAbobe | 上または左のセルから形式コピー |
xlFormatFromRightOrBelow | 下または右のセルから形式コピー |
◆Deleteメソッド
セルやセル範囲を削除するにはDeleteメソッドを利用します。
構文:オブジェクト.Delete(Shift)
引数のShiftで削除後のセルの移動方向(シフト方向)を指定することができます。ここは省略可能ですが、その場合はInsertメソッド同様にExcelが自動的に判断してシフトする形になります。
自動判断の基準はアクティブセル領域の行数と列数を基準とし、行数が多い場合は上方向、列数が多い場合は左方向にシフトします。行数と列数が同じ場合は上方向にシフトするものです。
≪引数Shiftに指定するXlDeletetShiftDirectionクラス定数≫
名前 | 内容 |
xlShiftUp | セル挿入後、下にシフト(xlUpでも可) |
xlShiftToLeft | セル挿入後、右にシフト(xlToLeftでも可) |
3.まとめ
セル挿入や削除の操作を行う上で移動方向も指定できますので、知っておくと何かと役に立つことも多いです。
記述自体も特に難しいこともありませんので、一度扱ってみると挙動がわかるので機会があればぜひご活用ください。
以上、セルの挿入/削除についてでした!今回の記事が何かの参考になれば幸いです。
Ryo