セルを削除
セルを削除するにはDeleteメソッドを利用します。
指定したセルまたはセル範囲を削除します。削除後は右または下にあったセルが削除部分に移動します。
構文
1 |
Rangeオブジェクト.Delete(Shift) |
項目 | 説明 |
---|---|
Rangeオブジェクト | 基点となる単一セルまたはセル範囲をRangeオブジェクトで指定します。 |
Shift | 省略可能です。削除後に右または下のどちらから削除したセルの部分に移動するかをXlDeleteShiftDirection列挙型で指定します。
|
サンプルコード
マクロ実行前です。わかりやすく表の周囲の背景色を付けています。
上の表に対してB3セルを削除するサンプルです。削除後に右のセルが左に移動します。
なお、コメントにしている3行目は4行目と同じようにセルの削除を行います。3行目と4行目のどちらの書き方でも構いません。
1 2 3 4 5 |
Sub DeleteTest1() '// B3セルを削除 'Call Range("B3").Delete(xlShiftToLeft) Range("B3").Delete Shift:=xlShiftToLeft End Sub |
セル削除時の注意点
上のサンプルコードでも分かりますが、一部のみにセルの削除を行うと、その部分だけ表がずれてしまいます。
ずれを発生させないようにするには表の先頭から最後までをRangeオブジェクトで指定します。上の場合はC2からC8セルを指定するとC列が削除されD2からD8セル範囲から右のセルが左に移動します。
1 2 3 |
Sub DeleteTest2() Range("C2:C8").Delete (xlShiftToLeft) End Sub |
テーブル機能での一部セル削除は列や行が削除される
罫線ではなく、Excelの挿入タブ→テーブル で作成した場合も表形式のデータを作成できます。
ただし、セルの削除では罫線の場合と異なる部分があります。
テーブル機能(Excelの挿入タブ→テーブル)で作成した表に対して一部のセルを削除した場合は、罫線の場合と異なり基点セルを含む列または行がまとめて削除されます。なお、セル挿入のInsertメソッドではテーブル機能の表への一部セルの挿入はエラーになります。
1 2 3 4 5 |
Sub DeleteTest3() '// B3セルを削除→列が削除される 'Call Range("B3").Delete(xlShiftToLeft) Range("B3").Delete Shift:=xlShiftToLeft End Sub |
このようにセルを1つ指定するだけで列や行をまとめて削除してくれるのですが、使い勝手が良いかどうかは判断が分かれるところです。
テーブル機能の表の一部のセルのみを削除するコードを書いている場合に、将来そのコードを見たときにコメントが無ければ「列を削除している」とはなかなか理解できないと思われます。
そういう特殊な挙動は便利に使うことも出来ますが、後で見たときに何をやっているのか理解できない処理になる恐れもあるため利用する場合は注意しましょう。