検索
連載

Excelの基本オブジェクト「セル」の参照、移動、コピー、選択、挿入、削除Excelマクロ/VBAで始める業務自動化プログラミング入門(4)(3/4 ページ)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、さまざまなセルの参照、移動、コピー、選択、挿入、削除の仕方に加え、行の高さ、列幅の変更方法などについて【Windows 10、Excel 2016に対応】。

Share
Tweet
LINE
Hatena

Insertメソッドでセルの挿入

 セルの挿入にはInsertメソッドを使う。日本語を英語に訳したそのままのメソッドだから、すぐに覚えられるだろう。

 Insertメソッドの書式は下記の通りだ。Shiftにはセルを挿入した後の、残ったセルをずらす方向を指定し、CopyOriginには挿入したセルの書式をどのセルからコピーするかの方法を指定できる。

Insertメソッドの書式

Rangeオブジェクト.Insert Shift:={表4の値},CopyOrigin:={表5の値}


 オブジェクトにはRangeオブジェクトを、「Shift:=」には表4の値を、「CopyOrigin:=」には表5の値を指定する。

表4 Shiftの値
定数 移動方向
xlShiftToRight セルを挿入後、右方向にシフト
xlShiftDown セルを挿入後、下方向にシフト


表5 CopyOriginの値
定数 書式のコピー元
xlFormatFromLeftOrAbove 左または上と同じ書式を適用
xlFormatFromRightOrBelow 右または下と同じ書式を適用

 図10のような表がある。B7の上にセルを挿入するには、リスト11のように記述する。


図10 B7セルの上にセルを挿入
Sub セルを挿入する()
  Range("B7", Range("B7").End(xlToRight)).Insert Shift:=xlShiftDown, Copyorigin:=xlFormatFromLeftOrAbove
End Sub
リスト11 セルを挿入する

 B7セルを基準に右方向の終端までを選択し、セルを挿入した後、残ったセルを下方向に伸ばし、上または左のセルの「書式」をコピーした。実行すると、図11のようになる。なお、セルの「書式」については、次回解説する。


図11 セルを書式付で挿入した

 表4や表5はExcelから表内にセルを挿入する手順を踏むときに表示されるメニューと対応している(図12)。


図12 Excelのメニューで表を挿入する場合に表示されるメニュー

Deleteメソッドでセルの削除

 セルの削除にはDeleteメソッドを使用する。書式は下記の通りだ。Shiftにはセルを削除した後、残ったセルをずらす方向を指定する。

Deleteメソッドの書式

Rangeオブジェクト.Delete Shift:={表6の値}


 オブジェクトにはRangeオブジェクトを、「Shift:=」には表6の値を指定する。

表6 Shiftの値
定数 移動方向
xlShiftToLeft セルを左方向にシフト
xlShiftUp セルを上方向にシフト

 図10からE3セルの「社員番号」のセルを全部削除する際のVBAのコードはリスト12のようになる。

Sub セルを削除する()
  Range("E3", Range("E3").End(xlDown)).Delete Shift:=xlShiftToLeft
End Sub
リスト12 セルを削除する

 E3のセルを基準に終端セル(下)まで(xlDown)選択し、Deleteメソッドで削除した後、残ったセルを左にずらしている(xlShiftToLeft)。実行結果は図13のようになる。


図13 E3セルにあった「社員番号」セルが削除された

 セルの挿入と削除の解説の次は、行や列の挿入と削除について解説しよう。

行や列の挿入と削除

 行や列の挿入と削除も、セルの挿入と削除と同じで、InsertとDeleteメソッドを使用する。書式もセルの場合と全く同じだ。

Insertメソッドで行の挿入

 まず指定した箇所に行を挿入してみよう。VBAのコードはリスト13のようになる。

Sub 行の挿入()
  Rows("8:9").Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub
リスト13 8と9の行を挿入する

 CopyOriginに指定する値は表5を参照。実行すると図14のようになる。セルの挿入と削除の場合は、指定したセルのみが対象となるが、行や列の場合は、行全体、列全体が対象となる。


図14 8と9の行を挿入した

Deleteメソッドで行の削除

 では、次に今挿入した行を削除してみよう。VBAはリスト14になる。

Sub 行の削除()
  Rows("8:9").Delete Shift:=xlShiftUp
End Sub
リスト14 8と9の行を削除する

 リスト14では、8と9の行を削除した後、行を上にずらしている。Shiftの値は表6を参照してほしい。実行すると図15のようになる。図14と比較すると8と9の行が削除されているのが分かる。


図15 8と9の行を削除した

Insertメソッドで列の挿入

 次は指定した箇所に列を挿入してみよう。FとG列に列を挿入するVBAはリスト15のようになる。

Sub 列の挿入()
  Columns("F:G").Insert CopyOrigin:=xlFormatFromRightOrBelow
End Sub
リスト15 FとGに列を挿入する

 CopyOriginには表5の値を指定する。FとGの列を追加した後、右側の列の書式をコピーしている。実行すると、図16のようになる。


図16 FとGの列を挿入した

Deleteメソッドで列の削除

 では、次に今挿入したFとGの列を削除してみよう。マクロはリスト16のようになる。

Sub 列の削除()
  Columns("F:G").Delete
End Sub
リスト16 FとG列を削除する

 これは説明するまでもないだろう、DeleteメソッドでFとG列を削除した。引数には何も指定しなくてもよい。

 実行結果は図16の左図と同じだ。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る