セルの挿入にはInsertメソッドを使う。日本語を英語に訳したそのままのメソッドだから、すぐに覚えられるだろう。
Insertメソッドの書式は下記の通りだ。Shiftにはセルを挿入した後の、残ったセルをずらす方向を指定し、CopyOriginには挿入したセルの書式をどのセルからコピーするかの方法を指定できる。
Rangeオブジェクト.Insert Shift:={表4の値},CopyOrigin:={表5の値}
オブジェクトにはRangeオブジェクトを、「Shift:=」には表4の値を、「CopyOrigin:=」には表5の値を指定する。
定数 | 移動方向 |
---|---|
xlShiftToRight | セルを挿入後、右方向にシフト |
xlShiftDown | セルを挿入後、下方向にシフト |
定数 | 書式のコピー元 |
---|---|
xlFormatFromLeftOrAbove | 左または上と同じ書式を適用 |
xlFormatFromRightOrBelow | 右または下と同じ書式を適用 |
図10のような表がある。B7の上にセルを挿入するには、リスト11のように記述する。
Sub セルを挿入する() Range("B7", Range("B7").End(xlToRight)).Insert Shift:=xlShiftDown, Copyorigin:=xlFormatFromLeftOrAbove End Sub
B7セルを基準に右方向の終端までを選択し、セルを挿入した後、残ったセルを下方向に伸ばし、上または左のセルの「書式」をコピーした。実行すると、図11のようになる。なお、セルの「書式」については、次回解説する。
表4や表5はExcelから表内にセルを挿入する手順を踏むときに表示されるメニューと対応している(図12)。
セルの削除にはDeleteメソッドを使用する。書式は下記の通りだ。Shiftにはセルを削除した後、残ったセルをずらす方向を指定する。
Rangeオブジェクト.Delete Shift:={表6の値}
オブジェクトにはRangeオブジェクトを、「Shift:=」には表6の値を指定する。
定数 | 移動方向 |
---|---|
xlShiftToLeft | セルを左方向にシフト |
xlShiftUp | セルを上方向にシフト |
図10からE3セルの「社員番号」のセルを全部削除する際のVBAのコードはリスト12のようになる。
Sub セルを削除する() Range("E3", Range("E3").End(xlDown)).Delete Shift:=xlShiftToLeft End Sub
E3のセルを基準に終端セル(下)まで(xlDown)選択し、Deleteメソッドで削除した後、残ったセルを左にずらしている(xlShiftToLeft)。実行結果は図13のようになる。
セルの挿入と削除の解説の次は、行や列の挿入と削除について解説しよう。
行や列の挿入と削除も、セルの挿入と削除と同じで、InsertとDeleteメソッドを使用する。書式もセルの場合と全く同じだ。
まず指定した箇所に行を挿入してみよう。VBAのコードはリスト13のようになる。
Sub 行の挿入() Rows("8:9").Insert CopyOrigin:=xlFormatFromRightOrBelow End Sub
CopyOriginに指定する値は表5を参照。実行すると図14のようになる。セルの挿入と削除の場合は、指定したセルのみが対象となるが、行や列の場合は、行全体、列全体が対象となる。
では、次に今挿入した行を削除してみよう。VBAはリスト14になる。
Sub 行の削除() Rows("8:9").Delete Shift:=xlShiftUp End Sub
リスト14では、8と9の行を削除した後、行を上にずらしている。Shiftの値は表6を参照してほしい。実行すると図15のようになる。図14と比較すると8と9の行が削除されているのが分かる。
次は指定した箇所に列を挿入してみよう。FとG列に列を挿入するVBAはリスト15のようになる。
Sub 列の挿入() Columns("F:G").Insert CopyOrigin:=xlFormatFromRightOrBelow End Sub
CopyOriginには表5の値を指定する。FとGの列を追加した後、右側の列の書式をコピーしている。実行すると、図16のようになる。
では、次に今挿入したFとGの列を削除してみよう。マクロはリスト16のようになる。
Sub 列の削除() Columns("F:G").Delete End Sub
これは説明するまでもないだろう、DeleteメソッドでFとG列を削除した。引数には何も指定しなくてもよい。
実行結果は図16の左図と同じだ。
Copyright © ITmedia, Inc. All Rights Reserved.